簡體   English   中英

條形 plot 和彩色分類變量

[英]Bar plot and coloured categorical variable

我有一個帶有 3 個變量的 dataframe:

data= [["2019/oct",10,"Approved"],["2019/oct",20,"Approved"],["2019/oct",30,"Approved"],["2019/oct",40,"Approved"],["2019/nov",20,"Under evaluation"],["2019/dec",30,"Aproved"]] 
df = pd.DataFrame(data, columns=['Period', 'Observations', 'Result'])

我想要一個按 Period 列分組的條形圖,顯示 Observations 列中包含的所有值,並用 Result 列着色。 我怎樣才能做到這一點?

我嘗試了 sns.barplot,但它僅在一個欄中加入了 Observations 列中的值(值的平均值)。

sns.barplot(x='Period',y='Observations',hue='Result',data=df,ci=None)

Plot output

假設您希望每一行都有一個欄,您可以執行以下操作:

import matplotlib.pyplot as plt
import matplotlib.patches as mpatches

result_cat = df["Result"].astype("category")
result_codes = result_cat.cat.codes.values
cmap = plt.cm.Dark2(range(df["Result"].unique().shape[0]))

patches = []
for code in result_cat.cat.codes.unique():
    cat = result_cat.cat.categories[code]
    patches.append(mpatches.Patch(color=cmap[code], label=cat))

df.plot.bar(x='Period', 
            y='Observations',
            color=cmap[result_codes], 
            legend=False)
plt.ylabel("Observations")
plt.legend(handles=patches)

條形圖

如果您希望它按月份分組,然后堆疊,請使用以下內容(注意我更新了您的代碼以確保一個月有多個狀態),但不確定我是否完全正確理解了您的問題:

%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt


data= [["2019/oct",10,"Approved"],["2019/oct",20,"Approved"],["2019/oct",30,"Approved"],["2019/oct",40,"Under evaluation"],["2019/nov",20,"Under evaluation"],["2019/dec",30,"Aproved"]] 
df = pd.DataFrame(data, columns=['Period', 'Observations', 'Result'])


df.groupby(['Period', 'Result'])['Observations'].sum().unstack('Result').plot(kind='bar', stacked=True)

結果圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM