繁体   English   中英

Python Matplotlib 条形图按类别和聚合

[英]Python Matplotlib bars subplots by Category and Aggregation

我有一张这样的桌子:

data = {'Category':["Toys","Toys","Toys","Toys","Food","Food","Food","Food","Food","Food","Food","Food","Furniture","Furniture","Furniture"], 
        'Product':["AA","BB","CC","DD","SSS","DDD","FFF","RRR","EEE","WWW","LLLLL","PPPPPP","LPO","NHY","MKO"],
       'QTY':[100,200,300,50,20,800,300,450,150,320,400,1000,150,900,1150]}
df = pd.DataFrame(data)
df

出去:

    Category    Product QTY
0   Toys          AA    100
1   Toys          BB    200
2   Toys          CC    300
3   Toys          DD    50
4   Food          SSS   20
5   Food          DDD   800
6   Food          FFF   300
7   Food          RRR   450
8   Food          EEE   150
9   Food          WWW   320
10  Food          LLLLL 400
11  Food          PPPPP 1000
12  Furniture     LPO   150
13  Furniture     NHY   900
14  Furniture     MKO   1150

所以,我需要像这样制作条形图(每个类别中的总产品数): 在此处输入图像描述

我的问题是我不知道如何组合类别、系列和聚合。 我设法将它们分成 3 个子图(1 个始终保持空白),但我无法将它们合并...

import matplotlib.pyplot as plt

fig, axarr = plt.subplots(2, 2, figsize=(12, 8))

df['Category'].value_counts().plot.bar(
    ax=axarr[0][0], fontsize=12, color='b'
)
axarr[0][0].set_title("Category", fontsize=18)

df['Product'].value_counts().plot.bar(
    ax=axarr[1][0], fontsize=12, color='b'
)
axarr[1][0].set_title("Product", fontsize=18)

df['QTY'].value_counts().plot.bar(
    ax=axarr[1][1], fontsize=12, color='b'
)
axarr[1][1].set_title("QTY", fontsize=18)

plt.subplots_adjust(hspace=.3)
plt.show()

出去在此处输入图像描述

我需要添加什么来组合它们?

使用seabornFacetGrid会容易得多

import  pandas as pd
import seaborn as sns

data = {'Category':["Toys","Toys","Toys","Toys","Food","Food","Food","Food","Food","Food","Food","Food","Furniture","Furniture","Furniture"], 
        'Product':["AA","BB","CC","DD","SSS","DDD","FFF","RRR","EEE","WWW","LLLLL","PPPPPP","LPO","NHY","MKO"],
       'QTY':[100,200,300,50,20,800,300,450,150,320,400,1000,150,900,1150]}
df = pd.DataFrame(data)

g = sns.FacetGrid(df, col='Category', sharex=False, sharey=False, col_wrap=2, height=3, aspect=1.5)
g.map_dataframe(sns.barplot, x='Product', y='QTY')

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM