graph-tool 绘图功能无法显示中文文字

graph-tool draw function cannot show Chinese text

我正在使用 graph-tool 并尝试用中文单词的节点 属性 绘制图形。 但是,当我使用

绘制它时
# coding=utf-8
from graph_tool.all import *

# English string as vertex name
g = Graph(directed=False)
vprop_name = g.new_vertex_property("string")
eprop_name = g.new_edge_property("string")
g.vertex_properties["name"] = vprop_name
g.edge_properties["name"] = eprop_name

v1 = g.add_vertex()
v2 = g.add_vertex()
v3 = g.add_vertex()
e1 = g.add_edge(0, 1)
e2 = g.add_edge(0, 2)
vprop_name[v1] = "cat"
vprop_name[v2] = "dog"
vprop_name[v3] = "mouse"
eprop_name[e1] = "01"
eprop_name[e2] = "02"

graph_draw(g, vertex_text=g.vertex_properties["name"],
           vertex_color="blue",
           vertex_font_size=18,
           edge_text=g.edge_properties["name"],
           output_size=(300, 300),
           output="english.png")

# Chinese string as vertex name
g = Graph(directed=False)
vprop_name = g.new_vertex_property("string")
eprop_name = g.new_edge_property("string")
g.vertex_properties["name"] = vprop_name
g.edge_properties["name"] = eprop_name

v1 = g.add_vertex()
v2 = g.add_vertex()
v3 = g.add_vertex()
e1 = g.add_edge(0, 1)
e2 = g.add_edge(0, 2)
vprop_name[v1] = "猫"
vprop_name[v2] = "狗"
vprop_name[v3] = "老鼠"
eprop_name[e1] = "01"
eprop_name[e2] = "02"

graph_draw(g, vertex_text=g.vertex_properties["name"],
           vertex_color="blue",
           vertex_font_size=18,
           edge_text=g.edge_properties["name"],
           output_size=(300, 300),
           output="chinese.png")

当"name"属性为中文文本时,无法显示任何字词。 当文字是英文的时候,图就OK了。

这是 "english.png":

这是 "chinese.png" 结果:

所以我想知道如何使用这个功能让它显示中文文本。

Graph-tool使用cairo做字体渲染,有点原始。这意味着您需要手动选择支持汉字的字体:

graph_draw(g, vertex_text=g.vertex_properties["name"],
           vertex_color="blue",
           vertex_font_size=18,
           vertex_font_family="HAN NOM A",        # this font needs to be installed
           edge_text=g.edge_properties["name"],
           output="chinese.png")

以上给出了我: