使用 pandas 和 matplotlib 对条形图的条形图进行不同的着色
Colouring the bars of a bar graph differently using pandas and matplotlib
所以我的数据看起来像
Manufacturer Mean
0 DAF 57.036199
1 Fiat 42.296814
2 Ford 54.546769
3 Iveco 41.678711
4 MAN 50.764308
5 Mercedes Benz 49.093340
6 Renault 47.384080
7 Scania 46.317282
8 Volkswagen 50.938158
9 Volvo 43.382830
我正在尝试使用上述数据绘制条形图。我希望 48 以上的值以不同的方式着色,而底部 3 以不同的方式着色。我尝试使用下面的代码,但它给了我以下错误:
TypeError: unsupported operand type(s) for -: 'str' and 'float'
我编写的图表代码:
plt.figure()
plt.bar(meansOfRoadGoingVehicles_sort['Manufacturer'], meansOfRoadGoingVehicles_sort['Mean'])
plt[0:7].set_color('b')
plt[6].set_color('grey')
plt[8:11].set_color('r')
plt.show()
问题是 plt.bar()
需要柱的坐标。您可以按 range(len(df))
的方式在 x 轴上放置一个列表,然后更改刻度。对于颜色,您可以创建一个颜色列表并将其分配给每个条。希望有用:
cars_dict = {
u"DAF": [57.036199],
u"Fiat": [42.296814],
u"Ford": [54.546769],
u"Iveco": [41.678711],
u"MAN": [50.764308],
u"Renault": [47.384080],
u"Scania": [46.317282],
u"Volkswagen": [50.938158],
u"Volvo": [43.382830]
}
df = pd.DataFrame(cars_dict).T.reset_index()
df.columns = [u"Manufacturer", u"Mean"]
colors = ['b']*6+['grey']+['r']*3
plt.figure()
barlist = plt.bar(range(len(df)), df['Mean'].values)
plt.xticks(range(len(df)),df['Manufacturer'].values,rotation=90)
bars = [bar.set_color(colors[i])
for i, bar in enumerate(barlist)]
plt.show()
所以我的数据看起来像
Manufacturer Mean
0 DAF 57.036199
1 Fiat 42.296814
2 Ford 54.546769
3 Iveco 41.678711
4 MAN 50.764308
5 Mercedes Benz 49.093340
6 Renault 47.384080
7 Scania 46.317282
8 Volkswagen 50.938158
9 Volvo 43.382830
我正在尝试使用上述数据绘制条形图。我希望 48 以上的值以不同的方式着色,而底部 3 以不同的方式着色。我尝试使用下面的代码,但它给了我以下错误:
TypeError: unsupported operand type(s) for -: 'str' and 'float'
我编写的图表代码:
plt.figure()
plt.bar(meansOfRoadGoingVehicles_sort['Manufacturer'], meansOfRoadGoingVehicles_sort['Mean'])
plt[0:7].set_color('b')
plt[6].set_color('grey')
plt[8:11].set_color('r')
plt.show()
问题是 plt.bar()
需要柱的坐标。您可以按 range(len(df))
的方式在 x 轴上放置一个列表,然后更改刻度。对于颜色,您可以创建一个颜色列表并将其分配给每个条。希望有用:
cars_dict = {
u"DAF": [57.036199],
u"Fiat": [42.296814],
u"Ford": [54.546769],
u"Iveco": [41.678711],
u"MAN": [50.764308],
u"Renault": [47.384080],
u"Scania": [46.317282],
u"Volkswagen": [50.938158],
u"Volvo": [43.382830]
}
df = pd.DataFrame(cars_dict).T.reset_index()
df.columns = [u"Manufacturer", u"Mean"]
colors = ['b']*6+['grey']+['r']*3
plt.figure()
barlist = plt.bar(range(len(df)), df['Mean'].values)
plt.xticks(range(len(df)),df['Manufacturer'].values,rotation=90)
bars = [bar.set_color(colors[i])
for i, bar in enumerate(barlist)]
plt.show()