gpt4 book ai didi

python - networkx 中的编码

转载 作者:太空宇宙 更新时间:2023-11-04 03:23:53 27 4
gpt4 key购买 nike

由于西里尔字符,我无法使用 networkx 绘制图形。

import networkx as nx

G = nx.Graph()
s = "СукупністьЇЄ"
G.add_node(s.decode('utf-8'))

nx.draw_graphviz(G)

我得到了

Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/Library/Python/2.7/site-packages/networkx-1.10-py2.7.egg/networkx/drawing/nx_pylab.py", line 982, in draw_graphviz
pos = nx.drawing.graphviz_layout(G, prog)
File "/Library/Python/2.7/site-packages/networkx-1.10-py2.7.egg/networkx/drawing/nx_pydot.py", line 257, in graphviz_layout
return pydot_layout(G=G,prog=prog,root=root,**kwds)
File "/Library/Python/2.7/site-packages/networkx-1.10-py2.7.egg/networkx/drawing/nx_pydot.py", line 296, in pydot_layout
node = node[0]
IndexError: list index out of range

我尝试将 nx_pydot 文件中的 #296 行更改为

node = node[:2]

以及之后的行 (#297) 到

pos=node.get_pos()[2:-2]

鉴于西里尔文符号需要两个字节,但没有任何改变。

我在 Mac 和 networkx 1.10 上使用 Python 2.7.5。

最佳答案

我得到了 networkx 开发人员 Aric 的帮助。

据他说,问题是我正在使用 pydot 接口(interface)到 graphviz,这似乎不适用于 unicode

# -*- coding: utf-8 -*-

import networkx as nx
import matplotlib.pyplot as pl

labels={}
graph = nx.Graph()

words= ["сукупність","вдача","волосся","колектив"]

for word in words:
w = word.decode('utf-8')
graph.add_node(w)
labels[w]=w
graph.add_edge("сукупність".decode('utf-8'),"вдача".decode('utf-8'))
graph.add_edge("сукупність".decode('utf-8'),"волосся".decode('utf-8'))
graph.add_edge("сукупність".decode('utf-8'),"колектив".decode('utf-8'))
pos=nx.spring_layout(graph)
# pos=nx.drawing.pydot_layout(graph) # doesn't work with unicode
# pos=nx.drawing.pygraphviz_layout(graph) # this also works, pygraphviz
nx.draw_networkx(graph, pos=pos, labels=labels)
pl.show()

关于python - networkx 中的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33722923/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com