2017-04-04 7 views
2

私はgeom_qq(エイリアスstat_qq)クォンタイル・クォンタイルプロット内のポイントを、それらに関連付けられている変数に基づいて色付けしたいと思います。geom_qqプロット内の着色点

私はさまざまな方法で試みられてきたmtcars$dispの値に基づいて、mtcars$mpgの分位数 - 分位数プロットのポイント着色されます例:

library(ggplot2) 
pA = ggplot(mtcars) + geom_qq(aes(sample = mpg)) 
pB = ggplot(mtcars) + geom_qq(aes(sample = mpg, color=disp)) 
pC = ggplot(mtcars) + geom_qq(aes(sample = mpg, fill=disp), shape=21) 
pD = ggplot(mtcars) + geom_qq(aes(sample = mpg, color=as.factor(disp))) 

library(cowplot) 
plot_grid(pA,pB,pC,pD,labels=LETTERS[1:4]) 

Failure to color stat_qq points

残念ながら、ポイントをmtcars$dispがカテゴリ変数(D)として扱われた場合にのみ色付けされます。この場合、データは、理論的な分位数が別々に計算される一連のポイントをもたらします。彼らのパターンが変化する)。

私は手動で行うことができ、各点の色を、指示連続変数として扱われることをmtcars $ DISPをしたいと思います:

manual_colors = colorRampPalette(c("blue","red"))(100)[as.numeric(cut(mtcars$disp,breaks=100))] 
ggplot(mtcars) + geom_qq(aes(sample = mpg), color=manual_colors) 

Desired result

適切ggplot2の構文は何だろうこの結果を達成するには?

答えて

1

geom_qqはこれを許可していないようです。あなたは

data.frame(sample, theoretical, data) 

data.frame(sample, theoretical) 

からthis lineを変更することができれば理論的には、それはおそらく動作しますが、それは私にはそれをしようとするための最も簡単な方法は明らかではありません。

代わりに、自分で値を計算することをお勧めします。それはかなり簡単です。あなたはこの

make_qq <- function(dd, x) { 
    dd<-dd[order(dd[[x]]), ] 
    dd$qq <- qnorm(ppoints(nrow(dd))) 
    dd 
} 

のような機能を使用することができます。そして、あなたはこの

ggplot(make_qq(mtcars, "mpg")) + 
    geom_point(aes(x=qq, y=mpg, color=hp)) + 
    labs(x="Theoretical",y="Observed") 

enter image description here

のようなプロットを作ることができます