【发布时间】:2020-06-26 09:16:16
【问题描述】:
首先,我不想制作常规的分组条形图。
我有两个数组,例如
user_score = [70, 95, 86, 50, 17]
user_type = ['High', 'High', 'High', 'Mid', 'Low']
我正在尝试创建一个条形图,以便将同一类别的条形图(在本例中为 user_type)按分隔或颜色分组。
我正在努力实现的示例图片
如何在 pyplot 中做到这一点?
目前对于我的实际用例,我只能做到这一点:
编辑:
1.
实际数据:
user_utilisation_rating = [0.0, 0.0, 0.0, 0.06, 0.09, 0.12, 0.13, 0.13, 0.14, 0.14, 0.16, 0.26, 0.3, 0.53, 0.54, 0.56, 0.76, 0.79, 1.0, 1.0]
user_type = ['Minimum', 'Minimum', 'Minimum', 'Consistent low', 'Consistent low', 'Consistent low', 'Consistent low', 'Consistent low', 'Consistent low', 'Consistent low', 'Consistent low', 'Ending low', 'Ending low', 'Start low', 'Start low', 'Start low', 'Consistent high', 'Consistent high', 'Maximum', 'Maximum']
2.
将图 1 更改为与我在图 2 中的实际情节方面尝试做的更相似的样式。
3.
试图用这个来完成它,但每个 user_type 只出现 1 个条形图。不知道我做错了什么。
import pandas as pd
user_pd = pd.DataFrame({
'utilisation' : users_utilisation_rating,
'type' : user_type
})
user_pd.sort_values(by=['utilisation'], inplace=True)
fig, ax = plt.subplots(figsize = (14, 10))
for tp in user_pd['type'].unique():
ax.bar(user_pd[user_pd['type'] == tp]['type'],
user_pd[user_pd['type'] == tp]['utilisation'],
label = tp)
ax.legend()
plt.show()
【问题讨论】:
-
那么,
user_score是 y 轴,user_type是颜色,你的 x 轴是什么? -
能否将相关的源数据添加到问题中?
-
@Anwarvic x 轴无关紧要——条形只需要按颜色或按 x 轴上的间距进行分类。
-
@Roy2012 添加了我正在使用的实际数据。我正在为认知无线电网络中的用户模拟信任值。
-
@arcanaxion,我添加了一个适用于您的数据的答案
标签: python matplotlib plot categorical-data