我已经使用 ggplot、geom_line 和 geom_ribbon 等绘制了 3 个图。
我想在布局中合并 p_min、p_max 和 p_mean 的 y 轴图。
p_min、p_max 和 p_mean 必须位于 y 轴上。
x 轴是数字(1,2)。
让我知道如何使用布局中的复变量绘制多个 y 轴的图。
我已经使用 ggplot、geom_line 和 geom_ribbon 等绘制了 3 个图。
我想在布局中合并 p_min、p_max 和 p_mean 的 y 轴图。
p_min、p_max 和 p_mean 必须位于 y 轴上。
x 轴是数字(1,2)。
让我知道如何使用布局中的复变量绘制多个 y 轴的图。
我认为这里的关键是你应该组合你的数据,这样每个几何图形只需要引用一个表,源表的特征(例如 min vs. max vs. mean)在该组合表中明确作为变量.
这是制作一些假数据并将其保存到三个表中的快速函数:
make_fake <- function(a, b, label) {
df <- data.frame(name = "apple", number = 1:5, value = a - b*sqrt(1:5), level = 2)
df$lower = df$value - 0.5; df$upper = df$value + 0.5; df$label = label
df
}
fake_min <- make_fake(3,.1, "min")
fake_max <- make_fake(7,1.5, "max")
fake_mean <- make_fake(5,0.8, "mean")
要将它们绘制在一起,如果将它们组合在一起使得每个几何只需要引用一个表就会更简单。我通过label
在上面的假数据中添加一个变量来做到这一点。
如果我们使用base::rbind
,我们可以将表格相互附加并绘制它们,通过将color
美学连接到label
变量来区分系列:
ggplot(data = rbind(fake_min, fake_max, fake_mean),
aes(x=number, y=value, group=label))+
geom_line(aes(color=label))+
geom_ribbon(aes(ymin=lower, ymax=upper, fill=label, group=label), alpha=0.3)
也许您想要一个显示最高上和最低下的组合色带。然后你可以预先计算这些,这里使用 dplyr:
library(dplyr)
rbind(fake_min, fake_max, fake_mean) %>%
group_by(number) %>%
summarize(upper = max(upper),
lower = min(lower)) -> fake_ribbon
rbind(fake_min, fake_max, fake_mean) %>%
ggplot(aes(x=number)) +
geom_line(aes(color=label, y=value))+
geom_ribbon(data = fake_ribbon, aes(ymin=lower, ymax=upper), alpha=0.2)