- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有这个代码:
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()
注意:如果出现“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/
我有这个代码: labels_params = {"labels":{n: "" if n[0] == "." else n for n in G.nodes () },
我正在使用 Networkx 绘制 Hierarchy Graph .我想将标签旋转到垂直位置,使用旋转关键字似乎没有效果。 nx.draw_networkx_labels(G, pos=lb
我是一名优秀的程序员,十分优秀!