ali*_*oar 4 ubuntu matplotlib font-family networkx
我有这个代码:
labels_params = {"labels":{n: "" if n[0] == "." else n for n in G.nodes () },
"font_family":"sans-serif",
"alpha":.5,
"font_size":16 }
draw_networkx_labels (G, pos, **labels_params)
Run Code Online (Sandbox Code Playgroud)
我的问题是我希望能够在输出图形中显示超过2种字体.
我想知道如何检测"font_family"的所有可能条目.
我从Networkx浏览了FontManager的代码,我只看到了"sans-serif".
我在Ubuntu下的X11工作.
在draw_networkx_labels源代码中略微调整一下,它确实归结为调用ax.text(其中ax是matplotlib轴).这意味着你应该拥有与任何普通MPL文本(docs)一样多的可配置性.
据我所知,字体名称是字体系列的一个实例; 但是因为通用族(例如'serif')通常作为字体系列变量的设置给出. http://www.w3schools.com/css/css_font.asp
这让我困惑了一段时间,所以如果我错了,请纠正我.
所以如果你使用这里的技术:
avail_font_names = [f.name for f in matplotlib.font_manager.fontManager.ttflist]
Run Code Online (Sandbox Code Playgroud)
你得到所有(特定)选项.不知道在哪里找到比泛型字体演示更全面的列表.
这篇文章显示了一个按名称搜索的方法:
[i for i in matplotlib.font_manager.findSystemFonts(fontpaths=None, fontext='ttf') if 'times' in i.lower()]
Run Code Online (Sandbox Code Playgroud)
从avail_font_names上面的列表中,我为这个例子选出了三个; 您可能必须替换其中一些,具体取决于您安装的内容.
import matplotlib.pyplot as plt
import networkx as nx
font_names = ['Sawasdee', 'Gentium Book Basic', 'FreeMono', ]
family_names = ['sans-serif', 'serif', 'fantasy', 'monospace']
# Make a graph
G = nx.generators.florentine_families_graph()
# need some positions for the nodes, so lay it out
pos = nx.spring_layout(G)
# create some maps for some subgraphs (not elegant way)
subgraph_members = [G.nodes()[i:i+3] for i in xrange(0, len(G.nodes()), 3)]
plt.figure(1)
nx.draw_networkx_nodes(G, pos)
for i, nodes in enumerate(subgraph_members):
f = font_names[(i % 3)]
#f = family_names[(i % 4)]
# extract the subgraph
g = G.subgraph(subgraph_members[i])
# draw on the labels with different fonts
nx.draw_networkx_labels(g, pos, font_family=f, font_size=40)
# show the edges too
nx.draw_networkx_edges(G, pos)
plt.show()
Run Code Online (Sandbox Code Playgroud)

注意:如果在找不到"UserWarning:findfont:Font family ['sans-serif']形式时出现错误.回到......",当尝试使用字体时,即使它们确实存在,这个麻烦的对话框建议清除字体缓存:(是的,这将无法挽回地删除文件,但它是自动生成的.)
rm ~/.matplotlib/fontList.cache
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1425 次 |
| 最近记录: |