首页 > 解决方案 > 使用 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)

数据框的输出

标签: python-3.xpandasmatplotlib

解决方案


如果没有更可重复的示例,我无法确定,但在绘图之前尝试unstack使用 MultiIndex 的最内层dx

dx.unstack().plot.bar(x='dname', y='widgetid', rot=90)

我希望这能起作用,因为在绘制 DataFrame 时,每一列都成为图例条目,每一行成为水平轴上的一个类别。


推荐阅读