python-3.x - 使用 Python、Pandas 和 Matplotlib 难以对条形图进行分组
问题描述
我很难让 plot.bar 将条形组合在一起,就像我在数据框中对它们进行分组一样。数据框正确返回分组数据,但是,条形图为数据框中的每一行提供了一个单独的条形图。理想情况下,我下面代码中的所有内容都应该为每个部门组合 3-6 个条形图(Dept X 应该为每种类型组合在一起的条形图,然后将真/假计数作为 Y 轴)。
数据框:
dname Type purchased
Dept X 0 False 141
True 270
1 False 2020
True 2604
2 False 2023
True 1047
代码:
import psycopg2
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
##connection and query data removed
df = pd.merge(df_departments[["id", "dname"]], df_widgets[["department", "widgetid", "purchased","Type"]], how='inner', left_on='id', right_on='department')
df.set_index(['dname'], inplace=True)
dx=df.groupby(['dname', 'Type','purchased'])['widgetid'].size()
dx.plot.bar(x='dname', y='widgetid', rot=90)
解决方案
如果没有更可重复的示例,我无法确定,但在绘图之前尝试unstack
使用 MultiIndex 的最内层dx
:
dx.unstack().plot.bar(x='dname', y='widgetid', rot=90)
我希望这能起作用,因为在绘制 DataFrame 时,每一列都成为图例条目,每一行成为水平轴上的一个类别。
推荐阅读
- javascript - D3 堆积条形排序 - 图表仅更新一次
- angular - 基于某些条件的动态路由器重用策略
- python - 在Python中按ID分组时计算数据框列的滚动平均值
- php - 我的表单提交php中的输入数据有问题
- python - 使用 Opencv 进行透视变换
- javascript - 如何以角度验证国家/地区的手机号码?
- javascript - React Redux - 401 - 未经授权 - 请求标头中缺少标头
- vue.js - 组件可以从数据中命名吗?
- python - 有人能告诉我python中随机函数的内部工作吗?
- javascript - 如何通过一次搜索提取多个 JSON 记录