gpt4 book ai didi

Python Plotnine - 创建堆积条形图

转载 作者:行者123 更新时间:2023-11-28 16:56:07 28 4
gpt4 key购买 nike

我一直在尝试使用 plotnine 绘制堆叠条形图。此图表示同一“类别”中的月末库存。 “子类别”是应该堆叠的内容。

我构建了一个从查询到数据库的 pandas 数据框。该查询检索日期范围内“类别”中每个“子类别”的总和(库存)。

这是DataFrame的格式:

     SubCategory1    SubCategory2    SubCategory3  ....   Dates
0 1450.0 130.5 430.2 .... 2019/Jan
1 1233.2 1000.0 13.6 .... 2019/Feb
2 1150.8 567.2 200.3 .... 2019/Mar

日期应在 X 轴上,Y 应由“SubCategory1”+“SubCategory2”+“SubCategory3”之和确定,并且颜色可区分。

我试过这个是因为我认为它有道理但没有运气:

g = ggplot(df)    
for key in subcategories:
g = g + geom_bar(aes(x='Dates', y=key), stat='identity', position='stack')

其中 subcategories 是带有 SubCategories 名称的字典。

可能是dataframe的格式不理想。或者我不知道如何将它与 plotnine/ggplot 一起正确使用。

感谢您的帮助。

最佳答案

您需要格式整齐的数据

from io import StringIO
import pandas as pd
from plotnine import *
from mizani.breaks import date_breaks

io = StringIO("""
SubCategory1 SubCategory2 SubCategory3 Dates
1450.0 130.5 430.2 2019/Jan
1233.2 1000.0 13.6 2019/Feb
1150.8 567.2 200.3 2019/Mar
""")

data = pd.read_csv(io, sep='\s+', parse_dates=[3])

# Make the data tidy
df = pd.melt(data, id_vars=['Dates'], var_name='categories')

"""
Dates categories value
0 2019-01-01 SubCategory1 1450.0
1 2019-02-01 SubCategory1 1233.2
2 2019-03-01 SubCategory1 1150.8
3 2019-01-01 SubCategory2 130.5
4 2019-02-01 SubCategory2 1000.0
5 2019-03-01 SubCategory2 567.2
6 2019-01-01 SubCategory3 430.2
7 2019-02-01 SubCategory3 13.6
8 2019-03-01 SubCategory3 200.3
"""

(ggplot(df, aes('Dates', 'value', fill='categories'))
+ geom_col()
+ scale_x_datetime(breaks=date_breaks('1 month'))
)

Result Plot

关于Python Plotnine - 创建堆积条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58084384/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com