借助 graphviz 展示简单的人物关系

69 阅读2分钟

背景

graphviz 网站提供了关于 graphviz\text{graphviz} 的介绍。Graphviz Examples 网站提供了一些小例子。我们可以借助 graphviz\text{graphviz} 来展示简单的人物关系。

正文

在 Sketchviz 页面,我们可以看到实时的绘制效果

image.png

《倚天屠龙记》中的部分角色

以《倚天屠龙记》中的一些角色为例,可以通过使用如下的代码生成对应的图

# http://www.graphviz.org/content/cluster

digraph G {
    zhangcuishan [label="张翠山" color="blue"];
    yinsusu [label="殷素素" color="red"];
    zhangwuji [label="张无忌" color="blue"];
    yintianzheng [label="殷天正" color="blue"];
    yinyewang [label="殷野王" color="blue"];
    yinli [label="殷离" color="red"];
    yangxiao [label="杨逍" color="blue"];
    jixiaofu [label="纪晓芙" color="red"];
    yangbuhui [label="杨不悔" color="red"];
    daiqisi [label="黛绮丝\n(金花婆婆)" color="red"];
    hanqianye [label="韩千叶\n(银叶先生)" color="blue"];
    xiaozhao [label="小昭" color="red"];
    ruyangwang [label="汝阳王" color="blue"];
    wangbaobao [label="王保保" color="blue"];
    zhaomin [label="赵敏" color="red"];

    zhangcuishan -> zhangwuji [color="blue"];
    yinsusu -> zhangwuji [color="red"];
    yintianzheng -> yinsusu [color="blue"];
    yintianzheng -> yinyewang [color="blue"];
    yinyewang -> yinli [color="blue"];
    yangxiao -> yangbuhui [color="blue"];
    jixiaofu -> yangbuhui [color="red"];
    daiqisi -> xiaozhao [color="red"];
    hanqianye -> xiaozhao [color="blue"];
    ruyangwang -> wangbaobao [color="blue"];
    ruyangwang -> zhaomin [color="blue"];
}

把这些代码复制到 Sketchviz,可以看到如下的效果

image.png

可以将其保存为 png\text{png} 文件

image.png

繁体版如下

# http://www.graphviz.org/content/cluster

digraph G {
    zhangcuishan [label="張翠山" color="blue"];
    yinsusu [label="殷素素" color="red"];
    zhangwuji [label="張無忌" color="blue"];
    yintianzheng [label="殷天正" color="blue"];
    yinyewang [label="殷野王" color="blue"];
    yinli [label="殷離" color="red"];
    yangxiao [label="楊逍" color="blue"];
    jixiaofu [label="紀曉芙" color="red"];
    yangbuhui [label="楊不悔" color="red"];
    daiqisi [label="黛綺絲\n(金花婆婆)" color="red"];
    hanqianye [label="韓千葉\n(銀葉先生)" color="blue"];
    xiaozhao [label="小昭" color="red"];
    ruyangwang [label="汝陽王" color="blue"];
    wangbaobao [label="王保保" color="blue"];
    zhaomin [label="趙敏" color="red"];

    zhangcuishan -> zhangwuji [color="blue"];
    yinsusu -> zhangwuji [color="red"];
    yintianzheng -> yinsusu [color="blue"];
    yintianzheng -> yinyewang [color="blue"];
    yinyewang -> yinli [color="blue"];
    yangxiao -> yangbuhui [color="blue"];
    jixiaofu -> yangbuhui [color="red"];
    daiqisi -> xiaozhao [color="red"];
    hanqianye -> xiaozhao [color="blue"];
    ruyangwang -> wangbaobao [color="blue"];
    ruyangwang -> zhaomin [color="blue"];
}

image.png

《天龙八部》中的部分角色

以《天龙八部》中的一些角色为例,可以通过使用如下的代码生成对应的图

# http://www.graphviz.org/content/cluster

digraph G {
    xiaoyuanshan [label="萧远山" color="blue"];
    xiaofeng [label="萧峰" color="blue"];
    xuanci [label="玄慈" color="blue"];
    yeerniang [label="叶二娘" color="red"];
    xuzhu [label="虚竹" color="blue"];
    duanyanqing [label="段延庆" color="blue"];
    daobaifeng [label="刀白凤" color="red"];
    duanyu [label="段誉" color="blue"];
    murongbo [label="慕容博" color="blue"];
    murongfu [label="慕容复" color="blue"];

    xiaoyuanshan -> xiaofeng [color="blue"];
    xuanci -> xuzhu [color="blue"];
    yeerniang -> xuzhu [color="red"];
    duanyanqing -> duanyu [color="blue"];
    daobaifeng -> duanyu [color="red"];
    murongbo -> murongfu [color="blue"]
}

image.png

参考资料