networkx draw_graphviz中文标签

时间:2012-11-27 02:54:25

标签: python networkx neato pygraphviz

我有一个图表,其中节点标签是中文的。我想使用draw_graphviz()绘制它,但在保存图像时,不会显示任何中文字符。它们显示为白色块。

我只是想知道如何设置字体。

nx.draw_graphviz(G, font_size=6, node_size=80, font_family='serif', font_color='b', alpha=0.1)       
plt.savefig("community__large" + str(i) + ".png")  
plt.close()

以上是我现在使用的代码。

1 个答案:

答案 0 :(得分:4)

  

...所有中文单词都不显示,而是使用块白色。

首先,我无法复制您在使用plt.show()时所描述的行为,但在保存图像时,字符显示为白色块。在我的系统(OS X 10.8.2,Python 2.7.3)上,SimHei字体似乎解决了这个问题。从matplotlib mailing list我发现Microsoft Yahei的字体也可以正常工作,但我还没试过。

g = nx.Graph()

g.add_edge('挪威'.decode('utf8'), '瑞典'.decode('utf8'))
nx.draw_graphviz(g, font_family='SimHei', node_size=1000,
    node_color='white')
plt.savefig('plot.png')

这产生了以下图像:

Graph with Chinese labels

请注意,我从谷歌翻译中获得了汉字,所以我希望这不是冒犯性的。