令人惊讶的是,那里几乎没有关于python和堆积物包的信息。我希望把堆叠的沙坝和相应的冲积物结合在一起。
使用下面的内容,我有三个独特的组,这在Group中得到了概述。我想为每个唯一的Group显示每个Point的比例。我采用这种方式格式化数据,因为每个Point需要三个单独的堆叠条形图。
因此,总体(Ove)突出显示了从所有三个Points中提取的总体比例。Group 1占70%,Group 2占20%,Group 3占10%。但各组的比例在不同的时间间隔内发生变化,Points。我希望把这个像一个标准的堆叠条形图,但在顶部加上冲积物。
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个单独的条形图.

发布于 2021-08-05 13:54:19
正如@darthbaba正确指出的那样,pyalluvial期望数据格式由匹配不同可变类型组合的频率组成。为了给出一个有效输入的示例,每个Group中的每个Group都被标记为存在(1)或缺席(0):
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行开始。
https://stackoverflow.com/questions/68584767
复制相似问题