我在matplotlib做错了什么?

时间:2016-02-23 14:33:18

标签: python matplotlib

import matplotlib.pyplot as plt

android = [82.8, 84.8, 79.8, 69.3]
android2 = [float(i) for i in android]

ios = [13.9,11.6,12.9,16.6]
ios2 = [float(i) for i in ios]

win = [2.6,2.5,3.4,3.1]
win2 = [float(i) for i in win]

years = [2105,2014,2013,2012]
years2 = [float(i) for i in years]

plt.bar(years2,android2, color='blue')
plt.xticks([2012,2013,2014,2015])

plt.show()

应该看like this

enter image description here

我很困惑为什么我的图表将所有x值压缩在一起而没有 将它们分开。如何让我的每个酒吧都像一个宽度一样宽 在图像?

2 个答案:

答案 0 :(得分:4)

因为你的#34年有2105年#34;列表,它比其他人更大,所以将其改为较小的值,如2005年或2015年。

答案 1 :(得分:2)

除了@Metin注意到的拼写错误之外,您还需要更改条形宽度,然后将每组条形偏移该宽度,以重现此图形。

关注this example,您可以这样做:

import matplotlib.pyplot as plt
import numpy as np

android = np.array([82.8, 84.8, 79.8, 69.3])
ios = np.array([13.9,11.6,12.9,16.6])
win = np.array([2.6,2.5,3.4,3.1])

years = ['2015','2014','2013','2012']

index = np.arange(len(years))

bar_width = 0.3

plt.bar(index, android, label='android',
        width=bar_width, color='blue')
plt.bar(index+bar_width, ios, label='ios',
        width=bar_width, color='red')
plt.bar(index+2*bar_width, win, label='win',
        width=bar_width, color='yellow')

plt.xticks(index + 1.5*bar_width, years)

plt.legend(loc=0)

plt.show()

enter image description here