Matplotlib绘制折线图添加数据标签报TypeError如何解决?
问题原因
plt.plot()函数的返回值是包含Line2D对象的列表,不是数据点的索引值,你代码中遍历temp_labels拿到的是Line2D实例,无法作为列表temp的索引,所以触发TypeError。- 原代码中
plt.annotate行存在语法错误,多写了一个右括号,会额外触发语法报错。
修正后的可运行代码
import matplotlib.pyplot as plt dates = [10,11,12] temp = [10,14,12] # 绘制基础折线 plt.plot(dates, temp) # 遍历每一组坐标添加数据标签 for x, y in zip(dates, temp): plt.annotate(str(y), (x, y), textcoords="offset points", xytext=(0,10), ha="center") plt.show()
修改说明
- 直接用
zip()同时遍历x轴坐标列表dates和y轴数值列表temp,直接拿到每个数据点的横纵坐标,不需要通过Line2D对象二次获取数据 - 修正了
plt.annotate的括号语法错误 - 对标注的数值做了字符串转换,保证标注内容格式正常
运行后即可在每个数据点正上方10个偏移点的位置居中显示对应的温度数值,符合预期效果。
内容的提问来源于stack exchange,提问作者Allouette
相关产品推荐
相关产品推荐

