1

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

如果我只能在绘图中添加一个背景图像,那也很好,因为我制作了一个大小合适的白色图像,并且已经在其中添加了图例(带有一般符号说明)。

这些我都做不到,也不能通过谷歌搜索找到。也许我只是无法站在 Google 的右侧或在 Igraph 文档中找到正确的关键字。

gp = 图形()。它是全球性的。有顶点和边序列等。有一些列表包含有关顶点和边的更多信息(例如: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)

我认为正确的链接就足够了。请帮助一点,并提前谢谢你!

4

1 回答 1

2

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

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

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

于 2013-03-02T15:57:06.170 回答