首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >堆叠图与冲积图- python

堆叠图与冲积图- python
EN

Stack Overflow用户
提问于 2021-07-30 02:30:08
回答 1查看 657关注 0票数 0

令人惊讶的是,那里几乎没有关于python和堆积物包的信息。我希望把堆叠的沙坝和相应的冲积物结合在一起。

使用下面的内容,我有三个独特的组,这在Group中得到了概述。我想为每个唯一的Group显示每个Point的比例。我采用这种方式格式化数据,因为每个Point需要三个单独的堆叠条形图。

因此,总体(Ove)突出显示了从所有三个Points中提取的总体比例。Group 1占70%,Group 2占20%,Group 3占10%。但各组的比例在不同的时间间隔内发生变化,Points。我希望把这个像一个标准的堆叠条形图,但在顶部加上冲积物。

代码语言:javascript
复制
import pandas as pd
import pyalluvial.alluvial as alluvial 

df = pd.DataFrame({
    'Group': [1, 2, 3],
    'Ove': [0.7, 0.2, 0.1],
    'Point 1': [0.8, 0.1, 0.1],
    'Point 2': [0.6, 0.2, 0.2],
    'Point 3': [0.7, 0.3, 0.0],
    })

ax = alluvial.plot(
   df = df, 
   xaxis_names = ['Group','Point 1','Point 2', 'Point 3'], 
   y_name = 'Ove', 
   alluvium = 'Group',
)

输出显示整体组比例(1小节)是正确的。但下面的堆叠的条子和比例。

如果转换df并将点作为一个列放置,那么就不会得到3个单独的条形图.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-05 13:54:19

正如@darthbaba正确指出的那样,pyalluvial期望数据格式由匹配不同可变类型组合的频率组成。为了给出一个有效输入的示例,每个Group中的每个Group都被标记为存在(1)或缺席(0):

代码语言:javascript
复制
df = pd.DataFrame({
    'Group': [1] * 6 + [2] * 6 + [3] * 6,
    'Point 1': [1, 1, 1, 1, 0, 0] * 3,
    'Point 2': [0, 1, 0, 1, 1, 0] * 3,
    'Point 3': [0, 0, 1, 1, 1, 1] * 3,
    'freq': [23, 11, 5, 7, 10, 12, 17, 3, 6, 17, 19, 20, 28, 4, 13, 8, 14, 9]
    })

fig = alluvial.plot(df=df, xaxis_names=['Point 1','Point 2', 'Point 3'], y_name='freq', alluvium='Group', ignore_continuity=False)

显然,上面的代码并没有解决这个问题,因为pyalluvial还没有支持包含堆叠条,就像它是如何在ggalluvial中实现的(看见示例5)。因此,除非您想使用ggalluvial,否则IMO最好的选择是自己添加所需的功能。我从修改第85行开始。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68584767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档