gpt4 book ai didi

r - ggplot2 绘制 100% 堆积面积图

转载 作者:行者123 更新时间:2023-12-02 14:59:53 27 4
gpt4 key购买 nike

我想从数据框中绘制一个 100% 堆积面积图,其中 df 的每一行总和为 1。这里有一个示例数据框:https://pastebin.com/ADMQP6Nx

我最终想要的是这样的: enter image description here

到目前为止,我在 SO 上找到的大多数解决方案都具有不同的 data.frame 结构,其中分组变量是按行而不是按列定义的,例如:

+--------+-------+-------+
| Period | Group | Value |
+--------+-------+-------+
| 1 | t1 | 0.3 |
| 1 | t2 | 0.1 |
| 1 | t3 | 0.4 |
| 1 | t4 | 0.2 |
| 2 | t1 | 0.5 |
| 2 | t2 | 0.1 |
| 2 | t3 | 0.3 |
| 2 | t4 | 0.2 |
| ... | ... | ... |
+--------+-------+-------+

然后他们像这样使用 ggplot:

ggplot(data, aes(x=Period, y=Value, fill=Group)) +  geom_area()

有没有不转换数据框的解决方案?

最佳答案

使用gather 转换数据:

library(tidyverse)

df <- structure(
list(
Period = 1:4,
t1 = c(0.3, 0.5, 0.1, 0.4),
t2 = c(0.1, 0.1, 0.3,
0.2),
t3 = c(0.4, 0.2, 0.4, 0.3),
t4 = c(0.2, 0.2, 0.2, 0.1)
),
.Names = c("Period", "t1",
"t2", "t3", "t4"),
row.names = c(NA, -4L),
class = "data.frame"
)


df %>%
gather(Group, Value, t1:t4) %>%
ggplot(aes(x=Period, y=Value, fill=Group)) +
geom_area()

enter image description here

关于r - ggplot2 绘制 100% 堆积面积图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50608379/

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