首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在pygraph中设置图形属性

在pygraph中设置图形属性
EN

Stack Overflow用户
提问于 2011-04-13 01:12:48
回答 4查看 6K关注 0票数 2

我在documentation of pygraph中找到了如何更改attributes of the nodes and the edges,但没有找到有关如何更改图形属性的帮助。

我试过了,但没走运:

代码语言:javascript
运行
复制
gr = graph()
gr.__setattr__('aspect',2)

你有什么建议吗?

谢谢!

更新我也尝试过:

代码语言:javascript
运行
复制
gr = graph()
gr.__setattr__('rotate',90)
gr.rotate = 90
gr.color = 'red'
setattr(gr,'bgcolor','red')

使用不同的想法更新网站中的2个示例代码,以更改属性:

代码语言:javascript
运行
复制
#!/usr/bin/env python

# Copyright (c) 2007-2008 Pedro Matiello <pmatiello@gmail.com>
# License: MIT (see COPYING file)

# Import graphviz
import sys
sys.path.append('..')
sys.path.append('/usr/lib/graphviz/python/')
sys.path.append('/usr/lib64/graphviz/python/')
import gv

# Import pygraph
from pygraph.classes.graph import graph
from pygraph.classes.digraph import digraph
from pygraph.algorithms.searching import breadth_first_search
from pygraph.readwrite.dot import write

# Graph creation
gr = graph()

gr.__setattr__('rotate',90)
gr.rotate = 90
gr.color = 'red'
setattr(gr,'bgcolor','red')

# Add nodes and edges
gr.add_nodes(["Portugal","Spain","France","Germany","Belgium","Netherlands","Italy"])
gr.add_nodes(["Switzerland","Austria","Denmark","Poland","Czech Republic","Slovakia","Hungary"])
gr.add_nodes(["England","Ireland","Scotland","Wales"])

gr.add_edge(("Portugal", "Spain"))
gr.add_edge(("Spain","France"))
gr.add_edge(("France","Belgium"))
gr.add_edge(("France","Germany"))
gr.add_edge(("France","Italy"))
gr.add_edge(("Belgium","Netherlands"))
gr.add_edge(("Germany","Belgium"))
gr.add_edge(("Germany","Netherlands"))
gr.add_edge(("England","Wales"))
gr.add_edge(("England","Scotland"))
gr.add_edge(("Scotland","Wales"))
gr.add_edge(("Switzerland","Austria"))
gr.add_edge(("Switzerland","Germany"))
gr.add_edge(("Switzerland","France"))
gr.add_edge(("Switzerland","Italy"))
gr.add_edge(("Austria","Germany"))
gr.add_edge(("Austria","Italy"))
gr.add_edge(("Austria","Czech Republic"))
gr.add_edge(("Austria","Slovakia"))
gr.add_edge(("Austria","Hungary"))
gr.add_edge(("Denmark","Germany"))
gr.add_edge(("Poland","Czech Republic"))
gr.add_edge(("Poland","Slovakia"))
gr.add_edge(("Poland","Germany"))
gr.add_edge(("Czech Republic","Slovakia"))
gr.add_edge(("Czech Republic","Germany"))
gr.add_edge(("Slovakia","Hungary"))

# Draw as PNG
dot = write(gr)
gvv = gv.readstring(dot)
gv.layout(gvv,'dot')
gv.render(gvv,'png','europe.png')
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-13 23:37:15

所以,我自己做了更多的研究,我发现pygraphviz提供了我需要的东西。下面是使用pygraphviz并接受属性的pygraph示例。它也更短,因为如果所有节点都通过边连接,则不必指定节点。

代码语言:javascript
运行
复制
#!/usr/bin/env python

# Copyright (c) 2007-2008 Pedro Matiello <pmatiello@gmail.com>
# License: MIT (see COPYING file)

# Import pygraphviz
import pygraphviz as pgv

# Graph creation and setting of attributes
gr = pgv.AGraph(rotate='90',bgcolor='lightgray')

# Add nodes and edges
gr.add_edge(("Portugal", "Spain"))
gr.add_edge(("Spain","France"))
gr.add_edge(("France","Belgium"))
gr.add_edge(("France","Germany"))
gr.add_edge(("France","Italy"))
gr.add_edge(("Belgium","Netherlands"))
gr.add_edge(("Germany","Belgium"))
gr.add_edge(("Germany","Netherlands"))
gr.add_edge(("England","Wales"))
gr.add_edge(("England","Scotland"))
gr.add_edge(("Scotland","Wales"))
gr.add_edge(("Switzerland","Austria"))
gr.add_edge(("Switzerland","Germany"))
gr.add_edge(("Switzerland","France"))
gr.add_edge(("Switzerland","Italy"))
gr.add_edge(("Austria","Germany"))
gr.add_edge(("Austria","Italy"))
gr.add_edge(("Austria","Czech Republic"))
gr.add_edge(("Austria","Slovakia"))
gr.add_edge(("Austria","Hungary"))
gr.add_edge(("Denmark","Germany"))
gr.add_edge(("Poland","Czech Republic"))
gr.add_edge(("Poland","Slovakia"))
gr.add_edge(("Poland","Germany"))
gr.add_edge(("Czech Republic","Slovakia"))
gr.add_edge(("Czech Republic","Germany"))
gr.add_edge(("Slovakia","Hungary"))

# Draw as PNG
gr.layout(prog='dot')
gr.draw('europe.png')
票数 1
EN

Stack Overflow用户

发布于 2013-02-09 07:47:27

显然,您可以使用gv.setv()在图形上设置属性。

代码语言:javascript
运行
复制
import gv
g = gv.digraph('19261920')
gv.setv(g, 'overlap', 'compress')

我通过检查/usr/include/graphviz/gv.i上的gv.py接口定义文件找到了gv.setv()

在interwebz上搜索"import gv" overlap setv,我找到了this old post,它演示了gv.setv()的用法。

我找到了这个包含更多关于setv的文档的PDF gv_python man page

对于这么简单的事情来说,这是相当多的侦察工作,是吗?

票数 3
EN

Stack Overflow用户

发布于 2011-04-13 01:21:40

我不知道pygraph,但我认为在python中设置属性的方式是:

代码语言:javascript
运行
复制
setattr(object, attr, value)
setattr(gr, 'aspect', 2)

我的意思是,您已经尝试过gr.aspect = 2,对吧?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5639049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档