在 R 中设计复杂关系(特色:DiagrammeR)

想要一目了然地了解复杂的关系? R 中的 DiagrammeR 软件包可以让你设计出专业的关系图。在本文中,您将学习如何使用 R 创建 法律纠纷作为示例,让我们仔细看看下面关系图的设计过程。

관계도 디자인 결과 그림
(用 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]
    租赁合同 -> 保险合同 -> 拒绝保险 -> 诉讼 -> 合同继承 -> 销售合同
    
  }
")

类似文章