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

Python折线图如何在标记点上方显示数值标签?

在折线图标记点上方显示数值的解决方案

要在每个标记点上方显示对应的数据值,你可以借助matplotlib的文本标注功能,结合pandas绘图返回的Axes对象来实现。以下是修改后的完整代码:

import pandas as pd
import matplotlib.pyplot as plt

d = {'Year': ['2010', '2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019'], 
     'Total': [1133.34262,1139.36454,1151.42072,1134.42854,1127.49346,1121.54558,1118.75674,1112.13016,1111.08126,1112.37696], 
     'Metric1':[444.4251,453.495,452.59418,454.63028,456.53064,456.17278,456.5183,455.35834,456.49362,456.4566], 
     'Metric2':[116.78576,116.13174,112.70122,112.49144,111.62764,108.74008,106.40782,105.61806,106.0623,104.74192], 
     'Metric3':[346.95144,346.24806,358.21786,350.06112,343.00264,338.49854,333.78466,329.88522,329.37928,331.36602], 
     'Metric4':[224.82246,223.58846,228.0432,217.09762,216.1351,217.83802,221.71278,221.10812,219.05968,219.38052]} 
df = pd.DataFrame(data=d)

# 绘制折线图并获取Axes对象
ax = df.plot( x="Year", 
              y=['Metric1','Metric2','Metric3','Metric4'],
              kind="line",
              figsize=(12,10),
              marker='o',
              linewidth=2
            )

# 遍历每条折线,为每个标记点添加数值标注
for line in ax.get_lines():
    # 获取折线的x、y坐标数据
    x_data = line.get_xdata()
    y_data = line.get_ydata()
    # 逐个添加文本标注
    for x, y in zip(x_data, y_data):
        # 在点的上方偏移一点位置显示数值,保留两位小数
        ax.text(x, y + 1.5, f'{y:.2f}', ha='center', fontsize=9)

plt.show()

关键说明:

  • 先通过ax = df.plot(...)获取绘图的Axes对象,所有标注操作基于该对象展开
  • ax.get_lines()可以获取图表中所有的折线对象
  • 遍历每条折线的x、y数据,用ax.text()添加文本:
    • x, y + 1.5:把文本放在标记点上方1.5个单位处,避免和标记点重叠
    • f'{y:.2f}':将数值格式化为两位小数,让标注更整洁
    • ha='center':设置文本水平居中对齐

你可以根据需求调整:

  • 修改y + 1.5中的偏移量,优化文本位置
  • 调整fontsize改变标注文字大小
  • 修改格式化字符串{y:.2f}控制小数位数,比如{y:.1f}保留一位小数,{y:.0f}显示整数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:50:31