如何使用matplotlib使用两个单值绘制条形图?

时间:2015-12-16 01:10:47

标签: python matplotlib plot

我正在尝试使用matplotlib为两个类 A B 创建两个值的条形图。 我的值为a = 43b = 21

我需要这个情节看起来像这样:

enter image description here

我一直试图用matplotlib的例子做几乎一个小时,但最终放弃了。也许有人可以帮助我?

3 个答案:

答案 0 :(得分:2)

使用bar()

import matplotlib.pyplot as plt

fig = plt.figure()
s = fig.add_subplot(111)
s.bar([1, 2], [43, 21], width=1)
s.set_xlim(0.5, 3.5)
fig.savefig('t.png')

enter image description here

编辑:更准确地遵循规范。

答案 1 :(得分:2)

mpl 1.5开始,你可以做到:

import matplotlib.pyplot as plt

fig, ax  = plt.subplots()
ax.bar([1, 2], [43, 21], width=1,
       tick_label=['A', 'B'], align='center')

enter image description here

答案 2 :(得分:1)

关于fjarri的答案的一些变化,

  • 可以更轻松地更改条形数及其值

  • 标记每个栏

像这样:

import matplotlib.pyplot as plt
import numpy as np

BAR_WIDTH = 1.     # 0. < BAR_WIDTH <= 1.

def main():
    # the data you want to plot
    categories = ["A", "B"]
    values     = [ 43,  21]
    # x-values for the center of each bar
    xs = np.arange(1, len(categories) + 1)
    # plot each bar centered
    plt.bar(xs - BAR_WIDTH/2, values, width=BAR_WIDTH)
    # add bar labels
    plt.xticks(xs, categories)
    # make sure the chart is centered
    plt.xlim(0, len(categories) + 1)
    # show the results
    plt.show()

main()

产生

enter image description here