在 R 中设计复杂关系(特色:DiagrammeR)
想要一目了然地了解复杂的关系? R 中的 DiagrammeR 软件包可以让你设计出专业的关系图。在本文中,您将学习如何使用 R 创建 法律纠纷作为示例,让我们仔细看看下面关系图的设计过程。
通过本指南,您将体验到 R 编程的强大功能和 DiagrammeR 的灵活性。 通过逐步讲解和实际代码示例,您将发现数据可视化的新维度。了解如何清晰地表示复杂的关系、代码优化技巧以及创建专业图形的秘诀。
解读法律案件中的复杂关系
首先,让我们来看看我们要设计的关系图适用于哪种情况。
- 原告(KEPCO):从被告二审参与人(房东)处租房并起诉要求返还房租押金的一方。
- 被告(首尔保证保险):与原告签订租金保证信用保险合同,但在原告未退还租金押金时未支付保险赔款的一方。
- 被告第二参与者(房东):将公寓租给原告并随后将公寓卖给 Alien 1 的一方。
- 异化 1(买方):从被告-二房东手中买下公寓并接手成为房东的一方。
开始使用 DiagrammeR 设计关系图
安装并加载 DiagrammeR 软件包
在 R 中绘制关系图的第一步是安装并加载 DiagrammeR 软件包。 让我们运行以下代码开始吧
安装 # DiagrammeR 软件包。
install.packages("DiagrammeR")
加载 # 软件包。
library(DiagrammeR)建立关系图结构
定义基本图形结构
DiagrammeR 使用 DOT 语言定义图形结构。让我们从下面的代码开始,它按从上到下 (TB) 的方向设置默认图形结构。
grViz("
数图层次结构 {
graph [rankdir = TB]
节点 [shape = 矩形]
# 我们要在这里添加节点和边。
}
")定义节点
现在,让我们为关系图添加节点,每个节点代表关系图中的一个元素。
添加 # 关系图中的每个元素
Korean_Electric_Power_Corporation [label = 'Plaintiff (tenant)/nKEPCO'] 韩国电力公司
Seoul_Guarantee_Insurance [label = '被告/nSeoul_Guarantee_Insurance']。
Landlord [label = 'Defendant Secondary Participant\n임대인'] 房东
买方 [label = 'Alienation 1\nBuyer'] 租赁合同
Lease_Contract [label = 'Lease Contract\nNon'treturn of Security Deposit'] 租赁合同
诉讼 [label = '对被告提起的诉讼'] Lawsuit
Contract_Succession [label = 'Alienator 1 to Alienate 1\nSuccession of Lease'] 合同继承
保险合同 [label = '保证保险合同'] Insurance_Contract [label = 'Contract for surety insurance'] 保险合同
保险拒绝 [标签 = '拒绝支付保险赔偿金'] Sale_Contract [标签 = '销售合同')
销售合同 [标签 = '销售合同'] Sale_Contract定义边缘(连接线)
添加边来表示节点之间的关系。
#S 设置节点之间的关系
Korean_Electric_Power_Corporation -> Seoul_Guarantee_Insurance [label = 'Lease_Contract'] (韩国电力公司)
韩国电力公司 -> 租赁合同
Seoul_Guarantee_Insurance -> Insurance_Denial
韩国电力公司 -> 诉讼
业主 -> 销售合同
买方 -> 合同_继承
租赁合同 -> 诉讼
诉讼 -> Seoul_担保_保险
买卖合同 -> 买方
合同_继承 -> 房东优化布局
添加隐形边,改善图形布局。
#A使用隐形边缘调整位置
边缘 [style = invis]
租赁合同 -> 保险合同 -> 拒绝保险 -> 诉讼 -> 继承合同 -> 销售合同最终代码和结果
下面是将所有碎片拼接在一起的完成代码,运行该代码后,会生成一个关系图,清晰地显示复杂的法律纠纷关系。
grViz("
数图层次结构 {
graph [rankdir = TB]
节点 [shape = 矩形]
Korean_Electric_Power_Corporation [label = 'Plaintiff (Lessee)/nKorea Electric Power Corporation'] (韩国电力公司
Seoul_Guarantee_Insurance [label = '被告/nSeoul_Guarantee_Insurance']。
业主 [标签 = '被告第二参与方/n业主'] Landlord [标签 = '被告第二参与方/n业主'] Landlord
买方 [标签 = '转让 1(买方]
Lease_Contract [label = 'Lease Contract\nNon'treturn of Security Deposit'] 租赁合同
诉讼 [label = '对被告提起的诉讼'] Lawsuit
Contract_Succession [label = 'Alienator 1 to Alienate 1\nSuccession of Lease'] 合同继承
保险合同 [label = '保证保险合同'] Insurance_Contract [label = 'Contract for surety insurance'] 保险合同
保险拒绝 [标签 = '拒绝支付保险赔偿金'] Sale_Contract [标签 = '销售合同')
销售合同 [标签 = '销售合同'] Sale_Contract
Korean_Electric_Power_Corporation -> Seoul_Guarantee_Insurance [标签 = '保证保险合同'] Seoul_Guarantee_Insurance
韩国电力公司 -> 租赁合同
首尔保证保险 -> 拒绝保险
韩国电力公司 -> 诉讼
业主 -> 销售合同
买方 -> 合同_继承
租赁合同 -> 诉讼
诉讼 -> Seoul_担保_保险
买卖合同 -> 买方
合同_继承 -> 房东
边缘 [样式 = invis]
租赁合同 -> 保险合同 -> 拒绝保险 -> 诉讼 -> 合同继承 -> 销售合同
}
")使用 DiagrammeR 的提示
自定义代码
- 更改节点和边缘的颜色、字体和样式。
- 您可以应用条件样式来突出特定关系。
探索高级功能
- 子图可用于简化复杂结构。
- 创建可根据动态数据自动更新的图表。
我们将另行撰文介绍如何使用它们。
组织起来
通过使用 R 和 DiagrammeR 软件包,我们轻松有效地创建了复杂的关系图。 本指南带领我们从创建基本图到优化布局。
现在,您可以开始创建自己独一无二的关系图了。您想在哪些项目中试用 DiagrammeR? 如需了解更多信息,请查看 图表/网络可视化 - DiagrammeR来了解一下。
1TP5完整源代码
在 Windows 上安装 R、RStudio 帖子来体验一下 R 的世界。然后,粘贴下面的代码即可实际运行源代码。
加载 # DiagrammeR 软件包。
library(DiagrammeR)
# 使用 grViz 函数生成图形。
# 该函数接收用 DOT 语言编写的图形规范并将其可视化。
grViz("
# digraph 表示有方向的图形。
# hierarchy 是图形的名称。
digraph hierarchy {
# 设置图形属性。
# rankdir = TB 设置图形从上到下的方向。
graph [rankdir = TB]
# 将节点的默认形状设置为矩形。
节点 [shape = 矩形]
# 为每个节点定义一个标签。
# [label = '...'] 指定节点上要显示的文本。
# \n 表示换行。
Korean_Electric_Power_Corporation [label = 'Plaintiff (Lessee)\nKorea Electric Power Corporation'] 韩国电力公司
Seoul_Guarantee_Insurance [label = '被告(承租人)']
Landlord [label = 'Defendant Secondary Participant\nLandlord'] 房东
买方 [label = 'Alienation 1\nBuyer'] 租赁合同
Lease_Contract [label = 'Lease Contract\nNon'treturn of Security Deposit'] 租赁合同
诉讼 [label = '对被告提起的诉讼'] Lawsuit
Contract_Succession [label = 'Alienator 1 to Alienate 1\nSuccession of Lease'] 合同继承
保险合同 [label = '保证保险合同'] Insurance_Contract [label = 'Contract for surety insurance'] 保险合同
保险拒绝 [标签 = '拒绝支付保险赔偿金'] Sale_Contract [标签 = '销售合同')
销售合同 [标签 = '销售合同'] Sale_Contract
定义 # 节点之间的关系(边)。
# A -> B 从 A 到 B 画一个箭头。
# [label = '...'] 指定箭头上要显示的文本。
Korean_Electric_Power_Corporation -> Seoul_Guarantee_Insurance [label = 'Charterparty Guarantee\nCredit Insurance Contract'] 韩国电力公司 -> Seoul_Guarantee_Insurance [label = 'Charterparty Guarantee\nCredit Insurance Contract'] 首尔担保保险公司
韩国电力公司 -> 租赁合同
Seoul_Guarantee_Insurance -> Insurance_Denial
韩国电力公司 -> 诉讼
业主 -> 销售合同
买方 -> 合同_继承
租赁合同 -> 诉讼
诉讼 -> Seoul_担保_保险
买卖合同 -> 买方
合同_继承 -> 房东
# 添加隐形边缘以调整布局。
# style = invis 使边缘不可见。
edge [style = invis]
租赁合同 -> 保险合同 -> 拒绝保险 -> 诉讼 -> 合同继承 -> 销售合同
}
")



