借用示例QQ plot: More than two data,如何在ggplot2
中实现呢?我只需要one abline
。
样本数据:
set.seed(10)
dat <- data.frame(Observed = rnorm(20), sim1= rnorm(20), sim2 = rnorm(20),sim3 = rnorm(20),sim4 = rnorm(20),sim5 = rnorm(20),sim6 = rnorm(20))
sim1...sim6
应该具有不同的颜色。
欢迎提出所有建议。
答案 0 :(得分:6)
在ggplot2
中使用stat_qq
进行直截了当,然后将数据的范围从宽变长。
library(tidyverse)
set.seed(10)
dat <- data.frame(Observed = rnorm(20), sim1= rnorm(20), sim2 = rnorm(20),sim3 = rnorm(20),sim4 = rnorm(20),sim5 = rnorm(20),sim6 = rnorm(20))
plot <- dat %>%
gather(variable, value, -Observed) %>%
ggplot(aes(sample = value, color = variable)) +
geom_abline() +
stat_qq()
# All in one
plot
如果您希望沿着比较变量制作多个构面或较小倍数,则可能会有所帮助。
# Facets!
plot +
facet_wrap(~variable)
如果您想提供自己的观察结果,而不是幻想,让qqplot
做繁重的工作,但设置plot.it = FALSE
,它将为您返回x / y坐标的列表QQ图。使用purrr::map_dfr
进行一些迭代,您可以执行以下操作:
library(tidyverse)
set.seed(10)
dat <- data.frame(Observed = rnorm(20), sim1 = rnorm(20), sim2 = rnorm(20),sim3 = rnorm(20),sim4 = rnorm(20),sim5 = rnorm(20),sim6 = rnorm(20))
plot_data <- map_dfr(names(dat)[-1], ~as_tibble(qqplot(dat[[.x]], dat$Observed, plot.it = FALSE)) %>%
mutate(id = .x))
ggplot(plot_data, aes(x, y, color = id)) +
geom_point() +
geom_abline() +
facet_wrap(~id)
由reprex package(v0.2.1)于2018-11-25创建