python - Python:如何绘制按两列分组的值的计数?
问题描述
我有一些数据按两列分组,有一个计数列:
Category Subcategory Count
0 1 1 10
1 1 2 15
2 1 3 16
3 2 1 2
4 2 2 8
5 2 3 12
6 3 1 33
7 3 3 23
8 4 2 3
9 5 1 2
我想根据上述数据绘制一个聚集柱形图。并非所有类别都包含所有子类别,因此对于这些,该图应显示 0。我想将值显示为类别中子类别的计数,以类别的百分比表示。
这是一个示例图表,其中包含 2 个类别和多个子类别作为单独的集群。我想达到类似的结果。
附加问题:是否有可能在 Y 轴上打破比例,使异常值列(高值)变得更小,而小值变得更明显?
解决方案
我硬编码了一些东西只是为了直接进行绘图,所以首先你要从你的数据列中创建我称之为“cat1”-“cat5”的东西。
import numpy as np
import matplotlib.pyplot as plt
# data to plot
n_groups = 3 #number of subcategories
cat1 = (10,15,16)
cat2 = (2,8,12)
cat3 = (33,0,23)
cat4 = (0,3,0)
cat5 = (2,0,0)
# create plot
fig, ax = plt.subplots()
index = np.arange(n_groups)
bar_width = 0.1
rects1 = plt.bar(index, cat1, bar_width, label='1')
rects2 = plt.bar(index + bar_width, cat2, bar_width, label='2')
rects3 = plt.bar(index + 2*bar_width, cat3, bar_width, label='3')
rects4 = plt.bar(index + 3*bar_width, cat4, bar_width, label='4')
rects5 = plt.bar(index + 4*bar_width, cat5, bar_width, label='5')
plt.xlabel('Subcategory')
plt.ylabel('Count')
plt.title('Count by Category')
plt.xticks(index + bar_width, ('1', '2', '3'))
plt.legend()
plt.tight_layout()
plt.show()
要回答您的第二个问题,请查看 brokenaxes 包:https ://github.com/bendichter/brokenaxes
推荐阅读
- mysql - Angular 应用程序如何通过本地服务器访问数据库?
- sourced - 执行“sourced init”时“超出上下文截止日期”
- excel - 立即将单元格的值从 EX: 755 更改为 7:55
- typescript - typescript 可以自动检测短路评估吗?
- scala - 阅读 csv 时,转义引号在 spark 2.2.0 中不起作用
- c++ - 使用 `auto` 参数将 Qt5 信号连接到 C++14 Lambda 是否危险?
- python - 使用模块 os 和 sys 在 python 中的索引错误
- javascript - 如何使用 jQuery 为左侧绝对定位元素动态添加值?
- python - 关于列表条目和标签
- wordpress - ACF 类别图像不显示