【问题标题】:Add legend or background image to Igraph 0.6 (for python) plot将图例或背景图像添加到 Igraph 0.6 (for python) plot
【发布时间】:2013-02-16 01:12:34
【问题描述】:

我使用带有 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)

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

【问题讨论】:

    标签: python graph plot legend igraph


    【解决方案1】:

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

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

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

    【讨论】:

    • 好的,我试一试。再次感谢塔马斯! :-)
    • 它不工作,不知何故,我传递给情节的表面变得独立于我写图例的表面。
    • 好的,它适用于我 b 首先绘制绘图,然后在打开图例的上下文之前调用 plot.save("tmp_filename") 和 surface.flush()。
    猜你喜欢
    • 2020-12-01
    • 2013-02-16
    • 2015-08-14
    • 2015-11-06
    • 2012-04-09
    相关资源
    最近更新 更多