我正在使用qqplot函数绘制一些Q-Q图。它使用起来非常方便,除了我想根据它们的ID为数据点着色。例如:
library(qualityTools)
n=(rnorm(n=500, m=1, sd=1) )
id=c(rep(1,250),rep(2,250))
myData=data.frame(x=n,y=id)
qqPlot(myData$x, "normal",confbounds = FALSE)
我需要根据他们的" id"来点亮点。值,例如蓝色表示id = 1的值,红色表示id = 2的值。我非常感谢你的帮助。
答案 0 :(得分:3)
您可以尝试设置col = myData$y
。我不确定qqPlot
函数如何从该包中起作用,但如果您不习惯使用该函数,则可以在基础R中执行此操作。
使用基本R函数,它看起来像这样:
# The example data, as generated in the question
n <- rnorm(n=500, m=1, sd=1)
id <- c(rep(1,250), rep(2,250))
myData <- data.frame(x=n,y=id)
# The plot
qqnorm(myData$x, col = myData$y)
qqline(myData$x, lty = 2)
由于此特定示例中的过度绘图,不确定颜色会有多大帮助。
答案 1 :(得分:2)
之前没有使用qqPlot,但是你想要使用它,有一种方法可以达到你想要的效果。看起来该函数无形地传回了绘图中使用的数据。这意味着我们可以这样做:
# Use qqPlot - it generates a graph, but ignore that for now
plotData <- qqPlot(myData$x, "normal",confbounds = FALSE, col = sample(colors(), nrow(myData)))
# Given that you have the data generated, you can create your own plot instead ...
with(plotData, {
plot(x, y, col = ifelse(id == 1, "red", "blue"))
abline(int, slope)
})
希望有所帮助。