首页 > 解决方案 > 如何在networkx绘图的右上角放置文本

问题描述

我正在绘制图表,并想在右上角添加一些文本。但是我不确定如何做到这一点。我试过了:

import matplotlib.pyplot as plt
import networkx as nx
import pydot
from networkx.drawing.nx_pydot import graphviz_layout

T = nx.balanced_tree(2, 5)


pos = graphviz_layout(T, prog="dot")
nx.draw(T, pos, node_color="y", edge_color='#909090', node_size=200, with_labels=True)

plt.text(0,0,"******************")
plt.show()

看看我是否可以显示任何文字。它确实在左下角显示了星号。我如何知道图表的分辨率,以便找出右上角的位置?

标签: pythonmatplotlibnetworking

解决方案


您可以阅读networkx.drawing.nx_pylab.draw_networkx

draw_networkx(G, pos=None, arrows=None, with_labels=True, **kwds)

参数:

ax : Matplotlib Axes 对象,可选 在指定的 Matplotlib 轴上绘制图形。

然后您可以创建fig, axe = plt.subplots()并传递axenx.draw并添加标题,axe然后您可以显示绘图的标题,如下所示:

用 设置标题matplotlib.axes.Axes.set_title,它具有设置标题位置的参数,包括matplotlib.text参数的使用。(例如x=1loc='right')。

import matplotlib.pyplot as plt
import networkx as nx
import pydot
from networkx.drawing.nx_pydot import graphviz_layout

T = nx.balanced_tree(2, 5)

fig, axe = plt.subplots(figsize=(12,7))
axe.set_title('Title for NetworkX', loc='right')

pos = graphviz_layout(T, prog="dot")
nx.draw(T, pos, ax = axe, node_color="y", edge_color='#909090', node_size=200, with_labels=True)

plt.show()

输出:

在此处输入图像描述

  • 使用x=时,标题以xx 轴为中心;调整数值以进行精确定位。
fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(10, 4))
ax1.set_title('Title for NetworkX', loc='right')

ax2.set_title('Title for NetworkX', x=.68)

ax3.set_title('Title for NetworkX', x=1)
fig.tight_layout()

在此处输入图像描述


推荐阅读