R语言 有人能给予我一个脚本,以伟大的阴影误差图,而不是误差条与ggplot?

ijnw1ujt  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(131)

我有下面的脚本来绘制增加的历元长度如何影响AEC、PLI和PLT(大脑功能连接的测量),我想在线周围画阴影区域,而不是误差线,但我不知道如何做到这一点!

ggplot(data=epochlength, aes(x=el, y=Mean, group=measure, colour=measure)) +
  ggtitle("Effect of Epoch Length on PLI, AEC and PLT") +
  geom_line(data=PLIdata, aes(x=el, y=upperboundPLI)) +
  geom_line(data=PLIdata, aes(x=el, y=lowerboundPLI)) +
  geom_line(data=PLTdata, aes(x=el, y=upperboundPLT)) +
  geom_line(data=PLTdata, aes(x=el, y=lowerboundPLT)) +
  geom_line(data=AECdata, aes(x=el, y=upperboundAEC)) +
  geom_line(data=AECdata, aes(x=el, y=lowerboundAEC)) +
  scale_y_continuous(expand = c(0, 0), limits=c(0,1)) +
  geom_line(linetype="solid", size=1.2) +
  xlab("Epochlength (seconds)") + 
  ylab("PLI / AEC / PLT Score") +
  scale_x_discrete(limits=c("1/8", "1/4", "1/2", "1", "2", "4", "8", "16"))

我把错误标成线,但不能解决如何在它们之间着色(或者是否有另一种更好的方法来做到这一点)。

j0pj023g

j0pj023g1#

1.合并数据,它减少了您需要的geom_*调用的数量(因此提高了可读性/可维护性)。
1.我们可以使用geom_ribbon来实现。
试试这个:

library(dplyr)
library(ggplot2)

bind_rows(
  rename(PLIdata, upperbound = upperboundPLI, lowerbound = lowerboundPLI),
  rename(PLTdata, upperbound = upperboundPLT, lowerbound = lowerboundPLT),
  rename(AECdata, upperbound = upperboundAEC, lowerbound = lowerboundAEC)
) %>%
  ggplot(aes(x = el, y = Mean, color = measure, fill = measure, group = measure)) +
  geom_line() +
  geom_ribbon(aes(ymin = lowerbound, ymax = upperbound), alpha = 0.5)

注:
1.我们并不需要dplyr来实现这一点,但是它的bind_rows对于这类事情来说非常方便。
1.如果框架中有其他列不是在所有框架之间共享的,则此操作仍然有效(因为我们只使用我们知道的共同名称),但您会发现,一个列中的某个列在另一个列中具有NA值。同样,这不是问题,但很高兴知道。如果您有其他需求,您可能会从更健壮的rename ing步骤中受益。我也是。
数据

set.seed(42)
PLIdata <- data.frame(measure = "PLI", el = 1:4, Mean = sample(10, size = 4)) |>
  transform(lowerboundPLI = Mean - runif(4), upperboundPLI = Mean + runif(4))
PLTdata <- data.frame(measure = "PLT", el = 1:4, Mean = sample(10, size = 4)) |>
  transform(lowerboundPLT = Mean - runif(4), upperboundPLT = Mean + runif(4))
AECdata <- data.frame(measure = "AEC", el = 1:4, Mean = sample(10, size = 4)) |>
  transform(lowerboundAEC = Mean - runif(4), upperboundAEC = Mean + runif(4))
PLIdata

相关问题