我想从数据框中绘制 100% 堆积面积图,其中 df 的每一行总和为 1。示例数据框在这里:https : //pastebin.com/ADMQP6Nx
到目前为止,我在 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 |
| ... | ... | ... |
+--------+-------+-------+
Run Code Online (Sandbox Code Playgroud)
然后他们像这样使用ggplot:
ggplot(data, aes(x=Period, y=Value, fill=Group)) + geom_area()
Run Code Online (Sandbox Code Playgroud)
有没有不转换数据框的解决方案?
转换数据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()
Run Code Online (Sandbox Code Playgroud)