У меня есть этот фрейм данных:
df = pd.DataFrame({'Segment': {0: 'A', 1: 'B', 2: 'C', 3: 'D'},
'%Value_S=0': {0: 0.489, 1: 0.429, 2: 0.467, 3: 0.461},
'%Value_S=1': {0: 0.511, 1: 0.571, 2: 0.533, 3: 0.539},
'%Total': {0: 0.148, 1: 0.076, 2: 0.3, 3: 0.477}})
df
Segment %Value_S=0 %Value_S=1 %Total
0 A 0.489 0.511 0.148
1 B 0.429 0.571 0.076
2 C 0.467 0.533 0.300
3 D 0.461 0.539 0.477
И я пытаюсь сделать столбец с накоплением, как этот:
![enter image description here](https://i.stack.imgur.com/jEheA.png)
Но мне нужно, чтобы ширина стержней была от %Total
. Итак, чтобы построить график выше, я использовал это:
z = df.melt(id_vars="Segment", value_vars=["%Value_S=0", "%Value_S=1"])
(ggplot(z, aes(x="Segment", y="value")) +
geom_bar(aes(fill="variable"), stat="identity", position="fill"))
, и если я добавлю аргумент width
:
geom_bar(aes(fill="variable", width= df["%Total"]), stat="identity", position="fill"))
Это даст мне эту ошибку:
PlotnineError: 'Aesthetics must either be length one, or the same length as the data'
Я попробовал и другой способ: сначала вычерчивая ширину, а затем я не могу найти способ построить две другие переменные. Самое сложное это: , четыре столбца должны покрывать ВСЕ график (без пробелов между ними). Есть идеи?