如何在基于groupby()生成的折线图标记上方添加数值标签?
在Matplotlib折线图的标记上方添加数值标签
首先注意到你代码里的一个小问题:results数据框的列是depart和Mean,但绘图时x参数写的是Unit,这会导致报错,先把这个修正过来。
要给每个标记(marker)上方添加数值标签,你可以通过遍历数据点,使用plt.text()函数在每个点的位置上方写入对应的均值。具体实现如下:
import matplotlib.pyplot as plt # 你的原代码(修正x轴参数) results = df.groupby('depart')['Survey'].mean().to_frame(name='Mean').reset_index() # 绘制折线图,获取返回的轴对象 ax = results.plot(x='depart', y='Mean', marker='o', figsize=(8,5)) plt.grid(True) plt.ylim(3.60, 5.00) # 遍历每个数据点,添加数值标签 for index, row in results.iterrows(): # 在标记的上方(y值增加0.05)写入均值,保留两位小数 ax.text(row['depart'], row['Mean'] + 0.05, f"{row['Mean']:.2f}", ha='center', va='bottom') plt.show()
关键部分说明:
ax.text()的前两个参数是标签的x、y坐标:x用row['depart']对应分类,y用row['Mean'] + 0.05让标签在标记上方一点,避免重叠。f"{row['Mean']:.2f}"用来格式化数值,保留两位小数,让标签更整洁。ha='center'设置水平居中,va='bottom'设置垂直对齐方式为底部,确保标签刚好在标记上方。
如果你的x轴是数值型而不是分类变量,用法是一样的,只需要对应替换x的取值即可。
内容的提问来源于stack exchange,提问作者kpop trash
相关产品推荐
相关产品推荐

