python matplotlib条形图添加条形图标题

时间:2016-10-27 14:54:01

标签: python python-2.7 matplotlib

我正在使用matplotlib和python 2.7

我需要创建一个简单的pyplot条形图,对于每个条形图,我需要在它上面添加它的y值。

我正在使用以下代码创建条形图:

import matplotlib.pyplot as plt

barlist = plt.bar([0,1,2,3], [100,200,300,400], width=5)

barlist[0].set_color('r')
barlist[0].title("what?!")

颜色的变化有效,但对于标题我得到以下错误: AttributeError:'矩形'对象没有属性' title'

我发现了一些关于类似问题的questions,但他们没有使用相同的创建条形图的方式,他们的解决方案对我不起作用。

任何关于将条形值添加为标题的简单解决方案的想法?

谢谢!

3 个答案:

答案 0 :(得分:2)

可以找到matplotlib.pyplot.bar文档here。可以找到文档的示例here,其中说明了如何使用条形图上方的标签绘制条形图。可以稍微修改它以使用您问题中的样本数据:

from __future__ import division
import matplotlib.pyplot as plt
import numpy as np

x = [0,1,2,3]
freq = [100,200,300,400]
width = 0.8 # width of the bars

fig, ax = plt.subplots()
rects1 = ax.bar(x, freq, width, color='r')

ax.set_ylim(0,450)
ax.set_ylabel('Frequency')
ax.set_title('Insert Title Here')
ax.set_xticks(np.add(x,(width/2))) # set the position of the x ticks
ax.set_xticklabels(('X1', 'X2', 'X3', 'X4', 'X5'))

def autolabel(rects):
    # attach some text labels
    for rect in rects:
        height = rect.get_height()
        ax.text(rect.get_x() + rect.get_width()/2., 1.05*height,
                '%d' % int(height),
                ha='center', va='bottom')

autolabel(rects1)

plt.show()

这会生成以下图表:

enter image description here

答案 1 :(得分:0)

从 matplotlib 3.4.0 开始,您可以使用内置的 plt.bar_label 辅助方法来 auto-label the bars

从当前轴供应 containers[0]

plt.bar([0,1,2,3], [100,200,300,400])
ax = plt.gca()
plt.bar_label(ax.containers[0])

或者如果你有分组的条形,迭代containers

for container in ax.containers:
    plt.bar_label(container)

plt.bar with plt.bar_label

答案 2 :(得分:-1)

尝试了您的代码后,我找到了答案。

import matplotlib.pyplot as plt

barlist = plt.bar([0,1,2,3], [100,200,300,400], width=5)

barlist[0].set_color('r')
plt.title("what?!")
plt.show()

这是输出的屏幕截图。

https://i.stack.imgur.com/ka6qJ.png