我正在使用qqplotr::stat_qq_point()
,它是ggplot2的“附加组件”,用于显示分位数-分位数图。我想通过分组系数为这些点着色,并提供一个数字键。我还想加入95%CI频段和合身线。执行这些任务的一种连贯方式是使用ggplot2
,stat_qq_band
(qqplotr
的CI),stat_qq_line
(ggplot2
和{{ 1}}和qqplotr
(从stat_qq_point
开始绘制qq点)。但是,我不知道如何显示数字键。
在我的代码(如下)中,省略了95%CI和fit行,因为之后可以轻松添加它们。该代码提供了正确的彩色点,但没有图例。
我知道我的代码很笨拙。如果我理解正确,则qqplotr
中的aes
仅接受stat_qq_point
参数,而不接受sample
。这意味着无法提供用于为数据点图提供颜色和图形图例的常规策略。
I found a very similar question here
但是,前面的问题和答案有点“黑客”。上一个问题中提出的策略是不使用colour
,而是使用基本函数stat_qq_point
分别计算分位数。然后,可以使用ggplot函数qqnorm
及其伴随功能来分别着色点并提供图形键。
另一个问题的样本数据:
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)
并产生以下内容,该内容带有色点但没有数字键:
因此,总而言之,我想使用ggplot2及其“附加项” 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%CI和图形键。但是也许根本不可能使用qqplotr
来完成所有这些任务。
我认为将问题留给SO是很有价值的,以防自提出上一个问题以来的1.8年内出现了更好的方法。
非常感谢您的帮助!