You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NetworkX绘制的图表右上角添加文本

方案1:使用轴相对坐标(更简便,无需计算数据范围)

这种方式不需要获取数据坐标范围,直接以坐标轴的相对比例定位,(0,0)对应左下角,(1,1)对应右上角,不管图的数据范围怎么变都能精准定位。
只需要给plt.text添加transform=plt.gca().transAxes参数,同时调整对齐参数避免文本超出边界:

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(1, 1, "******************", 
         transform=plt.gca().transAxes,  # 启用轴相对坐标
         ha='right',  # 文本水平右对齐
         va='top')    # 文本垂直顶部对齐

plt.show()

方案2:获取数据坐标范围计算右上角位置

如果需要使用数据坐标定位,可以通过以下两个方法获取当前轴的坐标边界:

  • plt.gca().get_xlim():返回元组(x轴最小值, x轴最大值)
  • plt.gca().get_ylim():返回元组(y轴最小值, y轴最大值)
    取x最大值和y最大值就是数据坐标下的右上角点,示例代码:
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)

# 获取数据坐标范围
x_min, x_max = plt.gca().get_xlim()
y_min, y_max = plt.gca().get_ylim()

# 在数据坐标的右上角放置文本
plt.text(x_max, y_max, "******************",
         ha='right',
         va='top')

plt.show()

补充说明:ha和va参数用于控制文本的对齐基准,默认情况下文本的左下角会对准传入的坐标点,设置ha='right'、va='top'后,文本的右上角会对准传入的坐标点,避免文本超出绘图区域。

内容的提问来源于stack exchange,提问作者Simd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:57:04