Как раскрасить точки и предоставить ключ фигуры на графике QQ, используя qqplotr :: stat_qq_point? - PullRequest
0 голосов
/ 27 декабря 2018

Я использую qqplotr::stat_qq_point(), который является «дополнением» к ggplot2 для отображения графика квантиль-квантиль.Я хотел бы раскрасить точки с помощью группирующего фактора, а также предоставить ключ цифры.Я также хотел бы включить 95-процентную полосу CI и линию соответствия.Одним из последовательных способов выполнения этих задач является использование ggplot2, stat_qq_band (CI от qqplotr), stat_qq_line (линия наилучшего соответствия в ggplot2 и qqplotr) и stat_qq_point (построенные точки qqот qqplotr).Тем не менее, я не могу понять, как представить цифру.

В моем коде (ниже) опущены 95% -й КИ и линия соответствия, так как они могут быть легко добавлены впоследствии.Код предоставляет правильно окрашенные точки, но без легенды.

Я знаю, что мой код очень хитрый.Если я правильно понимаю, aes в stat_qq_point принимает только параметр sample и не принимает colour.Это означает, что обычные стратегии по предоставлению легенд цвета и рисунка для графиков точек данных недоступны.

Я нашел очень похожий вопрос здесь

Однако предыдущийвопрос и ответ немного "взломать".Стратегия, предложенная в предыдущем вопросе, состоит не в том, чтобы использовать stat_qq_point, а в том, чтобы рассчитывать квантили отдельно, используя базовую функцию qqnorm.Затем функцию ggplot geom_point можно использовать с ее сопутствующими способностями для индивидуального окрашивания точек и предоставления ключа цифры.

выборка данных из другого вопроса:

set.seed(1001)
N <- 1000
G <- 10
dd <- data_frame(x=runif(N),
         f=factor(sample(1:G,size=N,replace=TRUE)),
         y=rnorm(N)+2*x+as.numeric(f))
m1 <- lm(y~x,data=dd)
dda <- cbind(augment(m1),f=dd$f)

Использование этих данных сМой подход заключается в следующем:

gg_color_hue <- function(n) {
  hues = seq(15, 375, length = n + 1)
  hcl(h = hues, l = 65, c = 100)[1:n]
}

n = length(unique(dda$f))
colores_1 = gg_color_hue(n)
dda$Color <- colores_1[dda$f]

dda$theory_quant=qqnorm(dda$.resid,plot.it=FALSE)$x
dda$sample_quant=qqnorm(dda$.resid,plot.it=FALSE)$y

library(qqplotr)

ggplot() +
stat_qq_point(
    data = dda, 
    mapping = aes(sample = .resid),
    colour=dda$Color
) +
scale_colour_manual(
    values=unique(dda$Colour),
    name ="f", 
    labels=c(1:10)
) +
guides(
    colour = guide_legend(override.aes = list(fill=NA),ncol=2,byrow=TRUE)
     ) +
labs(x = "Theoretical Quantiles", y = "Sample Quantiles")

И дает следующее, которое имеет цветные точки, но без цифры цифры:

![Plot of quantiles colored by f

Итак, в целом, я хотел бы подходить к рисованию графиков qq с точками, закрашенными группировками, линией наилучшего соответствия, 95% -ным доверительным интервалом и ключом цифры, используя ggplot2 и его «дополнение» qqplotr.Но, возможно, просто невозможно выполнить все эти задачи при qqplotr.

. Я подумал, что было бы целесообразно оставить свой вопрос по SO, если в предыдущие 1,8 года появятся какие-либо более эффективные подходы.с тех пор, как был задан предыдущий вопрос.

Большое спасибо за вашу помощь!

...