Matplotlib实现为每个X轴点添加数值标签(显示于最高点)
为X轴点添加递增数值标签(显示在对应最高点)的实现方案
需求:为每个X轴点添加从0开始递增的数值标签,标签需显示在对应位置的最高点。
修改后的绘图函数如下:
def plot_pics(self, figure, title, x, a1, a2, a3, labelx, labely): ax = figure.add_subplot(111) ax.plot(x, a1, '-o') ax.plot(x, a2, '-o') ax.plot(x, a3, '-o') ax.legend(['left region','center region','right region']) ax.set_xlabel(labelx) ax.set_ylabel(labely) ax.set_title(title) # 新增:添加从0开始的递增数值标签到每个X点的最高点 for idx, x_val in enumerate(x): # 获取当前X点三条曲线的y值,找到最大值 y_vals = [a1[idx], a2[idx], a3[idx]] max_y = max(y_vals) # 计算标签的垂直位置:最高点上方偏移y轴范围的1%,避免与点重合 label_y = max_y + (ax.get_ylim()[1] - ax.get_ylim()[0]) * 0.01 # 添加标签,水平居中,垂直对齐在底部 ax.text(x_val, label_y, str(idx), ha='center', va='bottom') figure.canvas.draw_idle()
关键修改说明:
- 遍历每个X轴点:通过
enumerate(x)同时获取递增索引(从0开始)和对应的X坐标值 - 定位最高点:收集当前X点三条曲线的y值,取最大值作为标签的垂直基准位置
- 标签布局:通过y轴范围的1%作为偏移量,确保标签显示在最高点上方;设置
ha='center'让标签水平居中于X点,va='bottom'保证标签底部对齐最高点上方,避免遮挡数据点
如果需要调整标签样式,可在ax.text()中添加参数,比如fontsize=10调整字体大小,color='#333333'修改标签颜色。
内容的提问来源于stack exchange,提问作者wimsenOG
相关产品推荐
相关产品推荐

