如何使用qqplotr :: stat_qq_point着色点并在QQ图中提供图形键?

时间:2018-12-27 02:29:53

标签: r ggplot2 legend

我正在使用qqplotr::stat_qq_point(),它是ggplot2的“附加组件”,用于显示分位数-分位数图。我想通过分组系数为这些点着色,并提供一个数字键。我还想加入95%CI频段和合身线。执行这些任务的一种连贯方式是使用ggplot2stat_qq_bandqqplotr的CI),stat_qq_lineggplot2和{{ 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)

并产生以下内容,该内容带有色点但没有数字键:

![Plot of quantiles colored by 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年内出现了更好的方法。

非常感谢您的帮助!

0 个答案:

没有答案