是否有可能在cygwin上绘制iGraph情节?

问题描述 投票:0回答:1

虽然在Ubuntu上生成iGraph图没有问题,但我在cygwin上遇到以下错误:

$ python
Python 2.7.8 (default, Jul 28 2014, 01:34:03)
[GCC 4.8.3] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from igraph import Graph, plot
>>>
>>> g = Graph([(0,1), (0,2), (2,3), (3,4), (4,2), (2,5), (5,0), (6,3), (5,6)])
>>> g.vs["name"] = ["Alice", "Bob", "Claire", "Dennis", "Esther", "Frank", "George"]
>>>
>>> layout = g.layout("kk")
>>> plot(g, layout = layout)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/igraph/drawing/__init__.py", line 475, in plot
    result.show()
  File "/usr/lib/python2.7/site-packages/igraph/drawing/__init__.py", line 327, in show
    "on this platform: %s" % plat)
NotImplementedError: showing plots is not implemented on this platform: CYGWIN_NT-6.1-WOW
>>>

有没有人成功在cygwin上制作iGraph情节?

编辑:documentation说:

绘图依赖于pycairo库,它提供了对流行的Cairo库的Python绑定。这意味着如果您没有安装pycairo,您将无法使用绘图功能。

我会检查我的py2cairo安装是否有问题。


请注意,其他iGraph功能在cygwin上运行正常:

$ python
Python 2.7.8 (default, Jul 28 2014, 01:34:03)
[GCC 4.8.3] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from igraph import Graph, plot
>>> g = Graph()
>>> print(g)
IGRAPH U--- 0 0 --
>>> g = Graph([(0,1), (0,2), (2,3), (3,4), (4,2), (2,5), (5,0), (6,3), (5,6)])
>>> g.vs["name"] = ["Alice", "Bob", "Claire", "Dennis", "Esther", "Frank", "George"]
>>> g.vs["age"] = [25, 31, 18, 47, 22, 23, 50]
>>> g.vs["gender"] = ["f", "m", "f", "m", "f", "m", "m"]
>>> g.es["is_formal"] = [False, False, True, True, True, False, True, False, False]
>>> g.es[0]["is_formal"] = True
>>> g.es[0]
igraph.Edge(<igraph.Graph object at 0xffcb542c>, 0, {'is_formal': True})
>>> g["date"]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Attribute does not exist'
>>> g["date"] = "2015-05-31"
>>> g["date"]
'2015-05-31'
>>> g.degree()
[3, 1, 4, 3, 2, 3, 2]
>>> g.edge_betweenness()
[6.0, 6.0, 4.0, 2.0, 4.0, 3.0, 4.0, 3.0, 4.0]
>>> g.vs[2].degree()
4
>>>

环境:

  • Windows 7的
  • Cygwin CYGWIN_NT-6.1-WOW Ron 2.0.1(0.287 / 5/3)
  • iGraph 0.7.1
python plot cygwin igraph
1个回答
0
投票

你机器上的py2cairo可能没什么问题,但你可以自己测试一下。尝试使用plot(g, "test.png", layout=layout) - 这会将绘图保存到文件中而不是显示它。您看到的错误消息是由igraph引发的,因为它无法弄清楚如何指示操作系统在窗口中显示PNG文件(保存了图表)。

用于显示绘图的命令存储在名为apps.image_viewer的配置变量中。您可以按如下方式更改它:

>>> from igraph import Configuration
>>> cfg = Configuration.instance()
>>> cfg["apps.image_viewer"] = "start"

这可能会起到作用,因为如果将PNG文件的名称传递给它,Windows上的start命令应该打开默认的图像查看器。如果它有效,您可以通过将以下内容写入cfg.filename指向的文件来保留更改:

[apps]
image_viewer=start

对于它的价值,igraph的部分应该找出在特定操作系统上使用哪个图像查看器(如果apps.image_viewer键不存在)在igraph/configuration.py中的一个名为get_platform_image_viewer()的函数中。此函数使用platform.system()来确定您正在使用的操作系统。如果你能让我知道platform.system()在你的Python中打印什么,我将提交一个补丁,使igraph处理Cygwin的方式与Windows相同。

© www.soinside.com 2019 - 2024. All rights reserved.