Matplotlib Python 3中柱状图的错误

3

我正在尝试使用matplotlib制作一个柱形图(从平均值中获取)并包含误差棒(从标准差值中获取),但是遇到了以下错误:

'Rectangle' object has no property 'labels'

如果我删除这行代码:

'Rectangle' object has no property 'rotation'

希望你能提供一些帮助和解释!以下是我目前的一个示例:

有时候我们需要在代码中使用变量,而这个变量可能被多个线程同时访问。为了避免出现同步问题,我们可以使用volatile关键字来标记这个变量。

list1=[1,2,3,4,5,6]
list2=[0.1,0.2,0.3,0.4,0.5,0.6]
list3=['a','b','c','d','e','f']
x = range(len(list1))
y = list1 #contains mean values in list
z = list2 #contains std values in list
l=list3 #contains label names
plt.bar(x, y, yerr=z, color='green', rotation='vertical', label=l)  
plt.show()

谢谢!


plt.bar不接受旋转参数,所以你应该将其删除以使代码正常工作。至于标签(label)而言,如果在显示图表之前调用plt.legend()方法,它用于为图表中所有绿色柱子提供一个统一的名称。你想要实现什么目标?可能有更好的方法来完成它。 - pakpe
2个回答

3
IIUC,
list1=[1,2,3,4,5,6]
list2=[0.1,0.2,0.3,0.4,0.5,0.6]
list3=['a','b','c','d','e','f']
x = range(len(list1))
y = list1 #contains mean values in list
z = list2 #contains std values in list
l=list3 #contains label names
rects = plt.bar(x, y, yerr=z, color='green', label=l)
ax = plt.gca()
ax.bar_label(rects)
plt.show()

输出:

在这里输入图片描述


list1=[1,2,3,4,5,6]
list2=[0.1,0.2,0.3,0.4,0.5,0.6]
list3=['a','b','c','d','e','f']
x = range(len(list1))
y = list1 #contains mean values in list
z = list2 #contains std values in list
l=list3 #contains label names
rects = plt.barh(x, y, xerr=z, color='green', label=l)
ax = plt.gca()
ax.bar_label(rects)
plt.show()

输出:

输入图像描述


这是一个与IT技术相关的输出示例,其中包含一个超链接和图片。

如何在柱状图的顶部显示错误值? - 0Knowledge
1
@0知识将此行更改为ax.bar_label(rects, list2),以使用list2进行标注。 - Scott Boston

0

错误是由于plt.bar()不知道关键字rotationlabel导致的,所以这些参数被传递给底层绘图函数,但显然这些函数也无法处理它们。

要绘制水平条形图,可以使用plt.barh()。注意,您应该将错误值作为xerr而不是yerr传递。标签的关键字是tick_label

plt.barh(x, y, xerr=z, color='green', tick_label=l)

horizontal bar plot


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接