Graph_Tool - 使用用户定义的顶点文本绘制图形

时间:2014-06-14 16:07:24

标签: python graph-tool

我试图在不同的顶点设置文字并绘制它们,但我不知道如何制作它。 我搜索了graph_tool documentaction,但我无法找到如何制作它,因为例子很混乱...

我的代码是:

from graph_tool.all import *
g = Graph()
g.add_vertex()
// How to something like: g.vertex(0).text = "A"
g.add_vertex()
// How to something like: g.vertex(1).text = "B"
g.add_edge(g.vertex(0),g.vertex(1))
// And how to use it instead of vertex_index
graph_draw(g, vertex_text=g.vertex_index, vertex_font_size=18, output_size=(200, 200), output="test.png")

等待任何线索

3 个答案:

答案 0 :(得分:6)

#!/usr/bin/python3

from graph_tool.all import *

g = Graph()

v1 = g.add_vertex()
v2 = g.add_vertex()

e = g.add_edge(v1, v2)

v_prop = g.new_vertex_property("string")
v_prop[v1] = 'foo'
v_prop[v2] = 'bar'

e_prop = g.new_edge_property("string")
e_prop[e] = 'e1'

graph_draw(g, vertex_text=v_prop,edge_text=e_prop, vertex_font_size=18, output_size=(200, 200), output="two-nodes.png")

这应该在图表工具网站上。

如果您可以了解如何设置边长,我想知道。

#!/usr/bin/python3

from graph_tool.all import *

g = Graph()

v1 = g.add_vertex()
v2 = g.add_vertex()
v3 = g.add_vertex()

e2 = g.add_edge(v1, v2)
e1 = g.add_edge(v1, v3)

v_prop = g.new_vertex_property("string")
v_prop[v1] = 'foo'
v_prop[v2] = 'bar'
v_prop[v3] = 'baz'

e_prop = g.new_edge_property("string")
e_prop[e1] = 'edge 1'
e_prop[e2] = 'edge 2'

e_len = g.new_edge_property("double")
e_len[e1] = 10
e_len[e2] = 20

graph_draw(g, vertex_text=v_prop, edge_text=e_prop, edge_pen_width = e_len, vertex_font_size=18, output_size=(800, 800), output="two-nodes.png")

这就是我所使用的,因为我可以操纵宽度...如果我尝试设置长度,它就会抱怨。

答案 1 :(得分:5)

请尝试以下代码:

from graph_tool.all import *

#create your graph object
g = Graph()

#add the property to vertex object
vprop = g.new_vertex_property("string") 

#add vertex 
vertex_1 = g.add_vertex() #here you create a vertex
vertex_2 = g.add_vertex() #here you create a vertex

#set the value to the vertex property
vprop[vertex_1] = "A" #here you set text to vertex_1 property
vprop[vertex_2] = "B"  #here you set text to vertex_2 property

#assign properties as a dic value
g.vertex_properties["name"]=vprop 

#add edge
g.add_edge(vertex_1,vertex_2) #add an edge 

#draw you graph 
graph_draw(
    g,
    vertex_text=g.vertex_properties["name"],
    vertex_font_size=18,
    output_size=(200, 200), 
    output="test.png"
)

此代码适用于我(在OS X 10.10.4和Ubuntu 14.04上)

答案 2 :(得分:1)

实际上它是写的,但不是很清楚。如果查看notes section,可以看到可以设置的所有节点和边缘属性。

可以像这样设置各个属性:

$stateParams === 1

*可以是:文本,大小,形状等,其中包含注释部分中列出的所有属性。

您还可以提供字典来绘制方法:

vertex_* : PropertyMap or arbitrary types (optional, default: None)
edge_* : PropertyMap or arbitrary types (optional, default: None)

具有顶点属性的字典。也可以通过vertex_参数给出单个属性,其中是属性的名称。

vprops : dict (optional, default: None)

具有边缘属性的字典。也可以通过edge_参数给出单个属性,其中是属性的名称。

在您的示例中,draw方法应该是这样的:

eprops : dict (optional, default: None)