python - matplotlib bar() 和 pandas bar() 函数有什么区别?
问题描述
考虑以下数据框:
index count sum
0 4 3372 230
1 4 68855 343
2 2 17948 232
3 5 708 788
4 5 9117 558
我想通过首先按“索引”列分组并为每个“索引”绘制“计数”的平均值来绘制条形图。我可以通过两种方式做到这一点:
方法1:
groups = df.groupby('index')
for name,group in groups:
print(name)
print(group)
plt.bar(name, group['count'].median(), label=name, align='center')
plt.legend()
plt.show()
上面的代码导致:
方法二:
df.groupby('index')['count'].median().plot.bar()
plt.xlabel('index')
plt.ylabel('count')
plt.title('index')
plt.show()
结果是:
1. 使用第二种方法时,如何获得每个条的唯一颜色?
2. 使用第一种方法时如何获得连续图(第一种和第二种之间有差距)?
解决方案
当 x 值为数字时,标准 matplotlib 条形图将 x 轴视为数字。如果您希望它们是分类的,只需将它们更改为字符串:
groups = df.groupby('index')
for name, group in groups:
plt.bar(str(name), group['count'].median(), label=name, align='center')
plt.legend()
熊猫条将有一个分类 x 轴,当值是数字时也是如此。要给条着色,color=
可以使用参数(默认颜色的名称为“C0”、“C1”等):
df.groupby('index')['count'].median().plot.bar(color=['C0', 'C1', 'C2'])
推荐阅读
- yii2 - 将 TCPDF 与 Yii2 一起使用时,HeadersAlready 已发送错误
- java - 在以 jar/war 运行的 Spring Boot 应用程序中,JAXB 解组非常慢
- typescript - 如何使用 vue-test-utils 和 Jest 在 Nuxt 中对使用 vuex-module-decorators 语法定义的 Vuex 模块进行单元测试?
- python - 有没有办法通过多个参数拆分字符串而不是获取 TypeError: 'str' object cannot be mapped as an integer?
- nginx - 如何通过网关处理多个后端 api 调用以进行单个 rest 调用
- php - 如何在子目录中使用 Index.php
- spring-data-elasticsearch - 如何获取文档的 _version 的当前值
- controller - 为什么我无法连接到 Ctrl?
- c++ - 如何转换从 C++ 中的函数返回的对象
- excel - SAPUI5 - 从 Excel 读取 CSV 文件时出错 - ANSI