首页 > 解决方案 > 如何创建带有类别的 Matplotlib 条形图?

问题描述

我正在尝试在 X 轴上创建一个带有类别的 matplotlib 条形图,但我无法正确地获得类别。这是我正在尝试做的一个最小示例。

data = [[46, 11000], [97, 15000], [27, 24000], [36, 9000], [9, 17000]]
df = pd.DataFrame(data, columns=['car_id', 'price'])

fig1, ax1 = plt.subplots(figsize=(10,5))
ax1.set_title('Car prices')
ax1.bar(df['car_id'], df['price'])
plt.xticks(np.arange(len(df)), list(df['car_id']))
plt.legend()
plt.show()

在此处输入图像描述

我需要 X 轴上的五个类别 (car_id)。我究竟做错了什么?:-/

标签: pythonmatplotlib

解决方案


你可以car_id变成category

df['car_id'] = df['car_id'].astype('category')

df.plot.bar(x='car_id')

输出:

在此处输入图像描述

您还可以仅绘制price列并重新标记:

ax = df.plot.bar(y='price')
ax.set_xticklabels(df['car_id'])

推荐阅读