2024-07-06 23:22:14 发布
网友
我一直在和pygraph合作做一些项目。我完成了this example,效果很好。在
现在,问题是:图形是以图片格式(gif)绘制的。我需要的是为gif图像上显示的图形布局获取每个节点的实际坐标。我该怎么做?我一直在努力,但找不到解决这个问题的办法。我认为这个问题的解决方法应该是操纵以下两条线中的一条:
gv.layout(gvv,'dot') gv.render(gvv,'png','europe.png')
提前谢谢!在
我刚刚找到了一个类似的解决方案,完全符合我的需要
pos = nx.drawing.nx_agraph.graphviz_layout(G, prog='dot', args='-Grankdir=LR')
干杯!在
Networkx可以执行以下操作:
import networkx as nx def setup_europe(): G = nx.Graph() G.add_edge("Portugal", "Spain") G.add_edge("Spain","France") G.add_edge("France","Belgium") G.add_edge("France","Germany") G.add_edge("France","Italy") G.add_edge("Belgium","Netherlands") G.add_edge("Germany","Belgium") G.add_edge("Germany","Netherlands") G.add_edge("England","Wales") G.add_edge("England","Scotland") G.add_edge("Scotland","Wales") G.add_edge("Switzerland","Austria") G.add_edge("Switzerland","Germany") G.add_edge("Switzerland","France") G.add_edge("Switzerland","Italy") G.add_edge("Austria","Germany") G.add_edge("Austria","Italy") G.add_edge("Austria","Czech Republic") G.add_edge("Austria","Slovakia") G.add_edge("Austria","Hungary") G.add_edge("Denmark","Germany") G.add_edge("Poland","Czech Republic") G.add_edge("Poland","Slovakia") G.add_edge("Poland","Germany") G.add_edge("Czech Republic","Slovakia") G.add_edge("Czech Republic","Germany") G.add_edge("Slovakia","Hungary") return G G = setup_europe()
写一个点文件:
计算节点的位置:
pos = nx.pygraphviz_layout(G, prog = 'dot') print(pos) # {'Netherlands': (713.86, 167.0), 'Italy': (473.86, 389.0), 'Czech Republic': (100.86, 241.0), 'Portugal': (879.86, 315.0), 'England': (1024.9, 241.0), 'Denmark': (568.86, 167.0), 'Poland': (100.86, 167.0), 'Scotland': (1024.9, 389.0), 'France': (571.86, 315.0), 'Belgium': (713.86, 19.0), 'Austria': (320.86, 167.0), 'Slovakia': (156.86, 315.0), 'Wales': (990.86, 315.0), 'Switzerland': (473.86, 241.0), 'Hungary': (294.86, 241.0), 'Germany': (465.86, 93.0), 'Spain': (879.86, 241.0)}
呈现png:
agraph = nx.to_agraph(G) agraph.draw("/tmp/europe.png", format = 'png', prog = 'dot')
您可以使用以下方法将布局信息添加到图形中:
gv.render(gvv)
然后找出获取其属性pos的节点的位置:
pos
然后根据您想要做的,您可能需要将点坐标转换为png图像坐标。您可以从这里获得有用的信息:
http://www.graphviz.org/faq/#FaqCoordTransformation
从图像单位到图像的细节都可以解释。在
希望这就是你要找的。在
我刚刚找到了一个类似的解决方案,完全符合我的需要
干杯!在
Networkx可以执行以下操作:
写一个点文件:
^{pr2}$计算节点的位置:
呈现png:
您可以使用以下方法将布局信息添加到图形中:
然后找出获取其属性
^{pr2}$pos
的节点的位置:然后根据您想要做的,您可能需要将点坐标转换为png图像坐标。您可以从这里获得有用的信息:
http://www.graphviz.org/faq/#FaqCoordTransformation
从图像单位到图像的细节都可以解释。在
希望这就是你要找的。在
相关问题 更多 >
编程相关推荐