如何在matplotlib图表x轴两点间添加underbrace注释并调整x轴标签位置
实现方案
修改后的代码做了3处核心适配,可直接运行得到目标效果:
- 修正下花括号的宽度参数,匹配x轴实际区间长度,避免超出绘图范围
- 增加x轴刻度的底部边距,将刻度标签下移,和花括号注释明确区分
- 调整注释字体大小、位置参数,保证文本清晰可读
import numpy as np import matplotlib.pyplot as plt # 数值数组 values = np.array([[1,2,3], [1,2,3]]) # 绘制折线图 fig, ax = plt.subplots() plt.plot(values[0,:], values[1,:], 'bo-',label='$P_{1}$') # 调整x轴刻度标签的边距,向下挪20个点避免和花括号重叠 ax.tick_params(axis='x', pad=20) # 限制y轴底部范围,留出位置放置注释 ax.set_ylim(bottom=-0.5) # 添加第一个区间的下花括号注释,覆盖x=1到x=2的区间 ax.annotate('s', xy=(1.5, 0), xytext=(1.5, -0.3), fontsize=12, ha='center', va='top', arrowprops=dict(arrowstyle='-[, widthB=1.0, lengthB=0.5', lw=2.0)) # 添加第二个区间的下花括号注释,覆盖x=2到x=3的区间 ax.annotate('t-s', xy=(2.5, 0), xytext=(2.5, -0.3), fontsize=12, ha='center', va='top', arrowprops=dict(arrowstyle='-[, widthB=1.0, lengthB=0.5', lw=2.0)) plt.legend() plt.show()
后续可根据需求调整参数:
- 修改
lengthB参数调整花括号的高度 - 修改
widthB参数调整花括号覆盖的区间宽度,数值和x轴坐标单位一致 - 修改
xytext的y坐标值,调整注释文本和花括号的距离
内容的提问来源于stack exchange,提问作者user4933
相关产品推荐
相关产品推荐

