python - 如何在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()
看看我是否可以显示任何文字。它确实在左下角显示了星号。我如何知道图表的分辨率,以便找出右上角的位置?
解决方案
您可以阅读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()
并传递axe
给nx.draw
并添加标题,axe
然后您可以显示绘图的标题,如下所示:
用 设置标题matplotlib.axes.Axes.set_title
,它具有设置标题位置的参数,包括matplotlib.text
参数的使用。(例如x=1
或loc='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=
时,标题以x
x 轴为中心;调整数值以进行精确定位。
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()
推荐阅读
- javascript - 在数组中添加多个值
- audio - 多个文件音频不同步的ffmpeg concat
- php - 无法更改 laravel 数据库
- autohotkey - 用于保存对话框的 AHK:导航到桌面并跳转到字段文件名
- android - Kotlin 中 TextInput 的 SetOnKeyListener 不起作用
- javascript - KeysPressed 是位掩码的。如何取消位掩码并使其成为关键状态的结构?(Javascript)
- mysql - HikariCP 和 mysql 线程连接
- php - Laravel 深度关系查询
- reactjs - 将动作从子组件提取到父组件
- java - java.lang.IllegalArgumentException:给定的字符串值:{“过去 7 天”:19 } 无法转换为 Json 对象