将图例或背景图像添加到Igraph 0.6(用于python)图

时间:2013-03-01 13:51:46

标签: python graph plot legend igraph

我使用Igraph 0.6和Cairo扩展来绘制python 2.7的图形。一切都很好但我想在每次绘图时添加一个图例。

如果我只能在情节中添加背景图像也可以,因为我制作了一个尺寸合适的白色图像,并且已添加了图例(带有一般符号说明)。

我无法做到这一点,也无法通过google来找到它。也许我只是无法进入谷歌的右侧或在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 个答案:

答案 0 :(得分:2)

诀窍是你可以将现有的开罗表面传递给plot,它只是在该表面上绘制图形而不是创建一个新图形。因此,基本上,您需要构建一个Cairo曲面(例如,ImageSurface),使用标准Cairo调用将您的图例绘制到该曲面上,然后将曲面传递到plot,如下所示:

plot(gp, target=my_surface, **visual_style)

据我所知,plot()在以这种方式调用时不会显示图形本身;它只会返回一个Plot对象。您可以调用show()对象的Plot方法来显示它,也可以调用save()方法将其保存到PNG文件中。