为Igraph 0.6(Python)图形添加图例或背景图像
我用Python 2.7和Igraph 0.6(配合Cairo扩展)画图,效果都不错,但我想每次画图的时候都加一个图例。
如果能在图上加个背景图片也行,因为我可以做一张白色的图片,大小合适,里面已经加好图例(包括一些通用的说明)。
不过我现在都做不到,也在谷歌上找不到相关的信息。可能是我没有找到正确的搜索方式,或者在Igraph的文档中找不到合适的关键词。
gp = Graph()。这个是全局的,里面有顶点和边的序列等等。还有一些列表包含了关于顶点和边的更多信息(比如:self.gp_cities, self.road_kind)。这是我画图的方式:
def showitshort(self,event):
global gp
layout = gp.layout("kk")
color_dict = {"1": "red", "20": "blue"}
visual_style = {}
visual_style["vertex_size"] = 15
visual_style["vertex_color"] = ["yellow"]
visual_style["edge_color"] = [color_dict[elektro] for elektro in self.road_kind]
visual_style["vertex_label"] = self.gp_cities
visual_style["layout"] = layout
visual_style["bbox"] = (4000, 2500)
visual_style["margin"] = 100
visual_style["vertex_label_dist"] = 5
visual_style["vertex_shape"] = "triangle-up"
plot(gp,**visual_style)
我觉得只提供这个链接就够了。请帮帮我,非常感谢!
1 个回答
2
这里的窍门是,你可以把一个已经存在的Cairo表面传给plot
,这样它就会在那个表面上画图,而不是新建一个表面。所以,基本上,你需要先创建一个Cairo表面(比如说,ImageSurface
),然后用标准的Cairo方法在这个表面上画出你的图例,最后把这个表面传给plot
,像这样:
plot(gp, target=my_surface, **visual_style)
据我所知,当你这样调用plot()
时,它不会直接显示图形;它只是会返回一个Plot
对象。你可以调用这个Plot
对象的show()
方法来显示图形,或者调用save()
方法把它保存为PNG文件。