gpt4 book ai didi

ubuntu - draw_networkx_labels 的可用 "font-family"条目

转载 作者:太空宇宙 更新时间:2023-11-03 16:51:51 24 4
gpt4 key购买 nike

我有这个代码:

    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)

我的问题是我希望能够在我的输出图中显示超过 2 种字体。

我想知道如何检测“font_family”的所有可能条目。

我浏览了 Networkx 的 FontManager 代码,我只看到“sans-serif”。​​

我在 Ubuntu 下的 X11 中工作。

最佳答案

仔细查看 draw_networkx_labels 源代码,它确实归结为对 ax.text 的调用(其中 ax 是 matplotlib 轴)。所以这意味着您应该拥有与任何普通 MPL 文本 (docs) 一样多的可配置性。

字体名称与字体系列

据我所知,字体名称是字体系列的一个实例;虽然因为通用系列(例如“衬线”)通常作为字体系列的设置变量。 http://www.w3schools.com/css/css_font.asp

这让我困惑了一段时间,所以如果我在这里错了,请纠正我。

查找完整的字体列表

因此,如果您使用 here 中的技术:

avail_font_names = [f.name for f in matplotlib.font_manager.fontManager.ttflist]

您将获得所有(特定)选项。不知道在哪里可以找到比font demo用于泛型。

这篇文章展示了 searching by name 的方法:

[i for i in matplotlib.font_manager.findSystemFonts(fontpaths=None, fontext='ttf') if 'times' in i.lower()]

为图表中的标签使用多种字体

从上面的 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()

example figure showing different font labelling

解决 'Falling back to ...' 警告

注意:如果出现“UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to ...”形式的错误,当尝试使用字体时,即使它们存在,这nabble dialog建议清除字体缓存:(是的,这将不可挽回地删除文件,但它是自动生成的。)

rm ~/.matplotlib/fontList.cache 

关于ubuntu - draw_networkx_labels 的可用 "font-family"条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20183433/

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