This问题显示了如何在ggplot2中使用qqline制作qqplot,但是答案似乎仅在将整个数据集绘制在单个图形中时有效。

我想要一种快速比较这些图以获取我的数据子集的方法。也就是说,我想在带有构面的图形上用qqlines制作qqplots。因此,在下面的示例中,所有9个地块都将有线,每个线都有自己的截距和斜率。

df1 = data.frame(x = rnorm(1000, 10),
                 y = sample(LETTERS[1:3], 100, replace = TRUE),
                 z = sample(letters[1:3], 100, replace = TRUE))

ggplot(df1, aes(sample = x)) +
  stat_qq() +
  facet_grid(y ~ z)

最佳答案

您可以尝试以下方法:

library(plyr)

# create some data
set.seed(123)
df1 <- data.frame(vals = rnorm(1000, 10),
                  y = sample(LETTERS[1:3], 1000, replace = TRUE),
                  z = sample(letters[1:3], 1000, replace = TRUE))

# calculate the normal theoretical quantiles per group
df2 <- ddply(.data = df1, .variables = .(y, z), function(dat){
             q <- qqnorm(dat$vals, plot = FALSE)
             dat$xq <- q$x
             dat
}
)

# plot the sample values against the theoretical quantiles
ggplot(data = df2, aes(x = xq, y = vals)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) +
  xlab("Theoretical") +
  ylab("Sample") +
  facet_grid(y ~ z)

关于r - ggplot2中的qqline具有多个方面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19599745/

10-12 22:58