Я использую 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")
И дает следующее, которое имеет цветные точки, но без цифры цифры:
Итак, в целом, я хотел бы подходить к рисованию графиков qq с точками, закрашенными группировками, линией наилучшего соответствия, 95% -ным доверительным интервалом и ключом цифры, используя ggplot2 и его «дополнение» qqplotr
.Но, возможно, просто невозможно выполнить все эти задачи при qqplotr
.
. Я подумал, что было бы целесообразно оставить свой вопрос по SO, если в предыдущие 1,8 года появятся какие-либо более эффективные подходы.с тех пор, как был задан предыдущий вопрос.
Большое спасибо за вашу помощь!