我在这里发布了我正在努力实现的目标Sankey bar graphs in R
我决定尝试在ggplot中实现这一点,但我目前的问题是:鉴于下面的代码,你将如何直接从主df计算曲线df?是否可以从绘图本身中提取堆叠的geom_bar元素的中心?
df <- data_frame(a=factor(c(1,2,1,2)), b=factor(c(3,3,4,4)), y = c(20,22,24,18))
p <- df %>%
ggplot(aes(x=a, y=y, group=b, fill=b, width=.3)) +
geom_bar(stat="identity", alpha=.9)
p
curves = data_frame(x=c(1,1), xend=c(2,2),
y=c(10, 35), yend=c(30,30),
weight=c(40,40),
width=c(10,40),
b=NA)
p +
geom_curve(data=curves,
aes(x=x, y=y, xend=xend, yend=yend, size=weight),
curvature=.2, alpha=.4)
答案 0 :(得分:0)
作为一个简单的例子,如何获得酒吧的中心:
library(tidyverse)
curves2 <- df %>%
group_by(a) %>%
mutate(y = cumsum(y) - 0.5 * y) %>%
spread(a, y) %>%
rename(y = `1`, yend = `2`) %>%
mutate(x = 1, xend = 2)
p + geom_curve(data=curves2,
aes(x=x, y=y, xend=xend, yend=yend, fill=NA,group=b),
curvature=.2, alpha=.4, size=12)