堆叠条形图:如何更改值/类别的顺序?

发布于 2025-02-06 07:32:26 字数 757 浏览 3 评论 0原文

使用公共数据集:

import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/flights.csv")
dfplot = df.groupby(["year","month"])["passengers"].sum().reset_index(name ='passengers')
dfplot['passengers_pct'] = dfplot['passengers'] / dfplot.groupby(["year"])['passengers'].transform('sum')
dfplot = dfplot.set_index('year')

dfplot.set_index('month',append=True)['passengers_pct'].unstack().plot.bar(stacked=True,figsize=(10,8))

我获取:

堆叠的条形图(请单击)

...我将每年堆叠栏的订单更改为自定义列表?例如: 类别= ['1月','2月','3月','April',“ 5月”,“ 6月”,“ 7月”,“八月”,“ 9月”,“ 10月”,“ November”, '12月']

谢谢:)

Using a public dataset:

import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/flights.csv")
dfplot = df.groupby(["year","month"])["passengers"].sum().reset_index(name ='passengers')
dfplot['passengers_pct'] = dfplot['passengers'] / dfplot.groupby(["year"])['passengers'].transform('sum')
dfplot = dfplot.set_index('year')

dfplot.set_index('month',append=True)['passengers_pct'].unstack().plot.bar(stacked=True,figsize=(10,8))

I get:

stacked bar chart (please click)

...how can I change the order of each year's stacked bars to a custom defined list? E.g.:
categories = ['January','February','March','April','May','June','July','August','September','October','November','December']

Thanks :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

陌上芳菲 2025-02-13 07:32:26

您可以尝试以下操作:

df = pd.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/flights.csv")
dfplot = df.groupby(["year","month"])["passengers"].sum().reset_index(name ='passengers')
dfplot['passengers_pct'] = dfplot['passengers'] / dfplot.groupby(["year"])['passengers'].transform('sum')
dfplot = dfplot.set_index('year')

categories = ['January','February','March','April','May','June','July','August','September','October','November','December']
dfplot.month = pd.CategoricalIndex(dfplot.month.values, 
                                 ordered=True, 
                                 categories=categories)
dfplot = dfplot.sort_values(by=['month'])

dfplot.set_index('month',append=True)['passengers_pct'].unstack().plot.bar(stacked=True,figsize=(10,8))

Can you try the following:

df = pd.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/flights.csv")
dfplot = df.groupby(["year","month"])["passengers"].sum().reset_index(name ='passengers')
dfplot['passengers_pct'] = dfplot['passengers'] / dfplot.groupby(["year"])['passengers'].transform('sum')
dfplot = dfplot.set_index('year')

categories = ['January','February','March','April','May','June','July','August','September','October','November','December']
dfplot.month = pd.CategoricalIndex(dfplot.month.values, 
                                 ordered=True, 
                                 categories=categories)
dfplot = dfplot.sort_values(by=['month'])

dfplot.set_index('month',append=True)['passengers_pct'].unstack().plot.bar(stacked=True,figsize=(10,8))
真心难拥有 2025-02-13 07:32:26

让我们导入日历并使用REINDEX

import calendar
# <your other code here>
dfplot.set_index('month',append=True)['passengers_pct'].unstack()\
      .reindex(calendar.month_name[1:], axis=1).plot.bar(stacked=True,figsize=(10,8))

output:

”在此处输入图像说明”

Let's import calendar and use reindex:

import calendar
# <your other code here>
dfplot.set_index('month',append=True)['passengers_pct'].unstack()\
      .reindex(calendar.month_name[1:], axis=1).plot.bar(stacked=True,figsize=(10,8))

Output:

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文