如何在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
相关产品推荐
相关产品推荐

