python - 如何使用python可视化一个节点分为2个集群的图,集群之间和集群内应该存在边?
问题描述
我想生成一个看起来与此类似的图表。
但是对于我的代码,我得到了如下图
我通过导入graphviz输入了以下代码。我请求有人帮助我对其进行更改以获取所需的代码。
from graphviz import Graph
g = Graph('G', filename='cluster.gv')
a=['1','2','3','4']
b=['5','6','7','8']
with g.subgraph(name='cluster_0') as c:
c.attr(color='lightgrey')
c.node_attr.update(style='filled', color='red')
for i in a:
c.node(str(i),shape='circle')
c.attr(label='partition #1')
with g.subgraph(name='cluster_1') as c:
c.attr(color='lightgrey')
c.node_attr.update(style='filled', color='blue')
for i in b:
c.node(str(i),shape='circle')
c.attr(label='partition #2')
g.edge('1','5')
g.edge('1','3')
g.edge('2','7')
g.edge('5','8')
g.view()
提前致谢
解决方案
- 我不使用 Python api,所以我不知道它是否会支持我的建议。
- “相似”是一个非常宽松的要求。
- 也就是说:
Graphviz 允许您显式设置节点位置(请参阅此处https://graphviz.org/faq/#FaqDotWithNodeCoords)。如果您想要组合成椭圆形的椭圆形集合,您可以这样做。请注意,“pos”值以磅为单位,而节点大小以英寸为单位!
这个程序:
digraph ovaltest {
graph [splines=line]
node [color=red shape=box style=rounded height=.2 width=.2 ]
p1_1 [pos="70,95" ]
p1_2 [pos="120,95" ]
p1_3 [pos="170,95" ]
p1_4 [pos="220,95" ]
p2_1 [pos="70,70" ]
p2_4 [pos="220,70" ]
p3_1 [pos="70,45" ]
p3_4 [pos="220,45" ]
p4_1 [pos="70,20" ]
p4_2 [pos="120,20" ]
p4_3 [pos="170,20" ]
p4_4 [pos="220,20" ]
node [color=blue shape=box style=rounded height=.2 width=.2 ]
q1_1 [pos="350,95" ]
q1_2 [pos="400,95" ]
q1_3 [pos="450,95" ]
q2_1 [pos="350,70" ]
q2_3 [pos="450,70" ]
q3_1 [pos="350,45" ]
q3_3 [pos="450,45" ]
q4_1 [pos="350,20" ]
q4_2 [pos="400,20" ]
q4_3 [pos="450,20" ]
p2_1 -> p3_4 [dir="none"]
p2_4 -> q1_2 [dir="none"]
p2_4 -> q3_3 [dir="none"]
p4_4 -> q4_1 [dir="none"]
}
这个命令行:
neato -n -Tpng yourfile.gv >yourfile.png
生成此图:
推荐阅读
- html - WordPress页面留下太多空间
- android - 使用协程处理文件操作
- html - 如何在 Jupyter Notebook 上的 Jupyter 小部件上显示视频
- android - 如何修复配置“编译”已过时,已被“实现”和“API”取代。将于 2018 年底移除
- c++ - VoltDB pass 在一次调用中执行多个插入,C++ API
- python - 将结果写入python中的文本文件
- pixi.js - pixiJS 画布大小是否有限制
- angular - 基于角色在同一路径上延迟加载模块
- c# - C# UNITY 2D 试图在 x 方向翻转精灵
- javascript - MVC - 多参数 Ajax 调用