将图表保存为eps格式。
我需要在igraph中保存图形作为图像,但是eps格式。
我有这个:
def _plot(g, membership=None):
visual_style = {}
visual_style["vertex_size"] = 24
visual_style["layout"] = g.layout("kk")
visual_style["bbox"] = (400, 300)
visual_style["margin"] = 20
for vertex in g.vs():
vertex["label"] = vertex.index + 1
if membership is not None:
for vertex in g.vs():
if(membership[vertex.index] == 0):
vertex["color"] = "gray"
else:
vertex["color"] = "white"
if(membership[vertex.index] == 0):
vertex["shape"] = "circle"
else:
vertex["shape"] = "rectangle"
visual_style["vertex_color"] = g.vs["color"]
visual_style["vertex_shape"] = g.vs["shape"]
visual_style["vertex_label_color"] = "black"
visual_style["vertex_label_dist"] = -0.4
igraph.plot(g, **visual_style)
if __name__ == "__main__":
g = igraph.Nexus.get("karate")
cl = g.community_fastgreedy()
membership = cl.as_clustering(2).membership
_plot(g, membership)
我试试这个:
(1)
igraph.plot(g,'graph.eps',**visual_style)
(2)
import matplotlib.pyplot as plt
igraph.plot(g,'graph.eps',**visual_style)
plt.savefig('graph.eps', format='eps', dpi=1000)
但是(1)和(2)不起作用,有人可以帮助我吗?
答案 0 :(得分:2)
不幸的是,igraph
的{{1}}仅支持PDF,PNG,SVG和PS。这就是你的方法#1失败的原因。
根据您的方法#2,没有任何内容可以将plot
图形绘制到igraph
绘图区域。但是,可以将matplotlib
图形绘制到由igraph
创建的Cairo SVG画布上(渲染器上下文需要作为matplotlib
的参数给出。)
这里概述了后一种技巧:https://lists.nongnu.org/archive/html/igraph-help/2010-06/msg00098.html
所以,这可能不是很简单。另一个问题是,如果你可以避免使用EPS,通常可以使用现代工具。
答案 1 :(得分:1)