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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:40:32