我尝试使用bar_label将值标签添加到matplotlib的绘图中。我的数据来自DataFrame。我收到错误AttributeError: 'AxesSubplot' object has no attribute 'datavalues'
。我尝试在StackOverflow和其他地方查看类似问题的不同答案,但我仍然不明白如何解决这个问题。有人能给我指出正确的方向吗?
我的matplotlib版本是3.6.0,所以这不是问题所在。
如果我尝试从一个列表构建它,如下面的例子,它工作正常,并生成了带有我想要的值标签的图。
year = [1999, 2000, 2001]
animals = [40, 50, 10]
barplot = plot.bar(year,
animals,
fc = "lightgray",
ec = "black")
plt.bar_label(container = barplot, labels = y, label_type = "center")
plt.show()
问题是当我试图从DataFrame中获取值的时候。例如,下面的代码:
year_v2 = [1999, 2010, 2011]
animals_v2 = [400, 500, 100]
df_v2 = pd.DataFrame([year_v2, animals_v2], index = ["year", "animals"]).T
barplot_v2 = df_v2.plot.bar("year",
"animals",
fc = "lightgray",
ec = "black")
plt.bar_label(container = barplot_v2,
labels = "animals",
label_type = "center")
plt.show()
生成图,但不带值标签,并带有错误AttributeError: 'AxesSubplot' object has no attribute 'datavalues'
。
2条答案
按热度按时间km0tfn4u1#
您需要使用axessubplot中的bar_label访问轴中的容器:
输出:
jexiocij2#
建议:
您可以尝试使用
matplotlib.plyplot.text()
方法向图表添加数值标签。该方法具有以下参数。样品代码:
输出:
参考文献:
https://www.geeksforgeeks.org/adding-value-labels-on-a-matplotlib-bar-chart/https://pythonguides.com/matplotlib-bar-chart-labels/