【发布时间】:2013-10-24 23:50:31
【问题描述】:
由于我可以在 python 中使用 matplotlib 绘制曲线,我想知道是否有任何方法可以以某种方式显示 .dot 图。我有一个描述图表的字符串:
graph name{
1--2;
}
以某种方式将其传递给查看器程序?
【问题讨论】:
-
仅限命令行:
dot -Tpng mygraph.dot -o mygraph.png
由于我可以在 python 中使用 matplotlib 绘制曲线,我想知道是否有任何方法可以以某种方式显示 .dot 图。我有一个描述图表的字符串:
graph name{
1--2;
}
以某种方式将其传递给查看器程序?
【问题讨论】:
dot -Tpng mygraph.dot -o mygraph.png
也许不完全是您打算做的事情,但您可以使用 pygraphviz 并将您的图表打印到文件中:
import pygraphviz as pgv
G=pgv.AGraph()
G.add_edge('1','2')
G.layout()
G.draw('file.png')
(或者您可以只使用 G = pgv.AGraph('file.dot') 导入一个 .dot 文件)
然后您可以随时使用 Image 或 openCV 来加载您的文件并将其显示在查看器中。
我不认为 pygraphviz 允许你直接这样做。
编辑:
我最近发现了另一种方法并记住了您的问题:NetworkX 让您这样做。方法如下:
或者直接使用 NetworkX 创建您的图表。 NetworkX 的大部分命令与 pygraphviz 中的命令相同,这很方便。然后只需发送到 matplotlib 并在那里绘制:
import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph()
G.add_edge('1','2')
nx.draw(G)
plt.show()
或者您可以通过 pygraphviz 导入您的 .dot 文件,然后将其转换为 networkx 对象:
import pygraphviz as pgv
import networkx as nx
import matplotlib.pyplot as plt
Gtmp = pgv.AGraph('file.dot')
G = nx.Graph(Gtmp)
nx.draw(G)
plt.show()
所以现在你有更多选择:)
【讨论】: