2011-12-12 14 views
5

Iは、単純な散布図散布 - 基地Rプロット

x<-rnorm(100) 
y<-rnorm(100) 
z<-rnorm(100) 

を有するIはplot(x,y)をプロットしたいが、点の色は、zに基づいて色分けであるべきです。

また、私は、いくつのグループ(したがって色)を持つべきかを定義したいと思います。zそして、このグループ分けは外れ値に耐えるべきである(zの密度を等密度グループnに分割することができる)。

これまで手動で行っていますが、自動的にこれを行う方法はありますか?

注:私はggplotで基数Rでこれを行いたいです。

答えて

11

colパラメータにベクトルの色を渡すことができるので、アプリケーションに適した方法でzグループを定義するだけです。ベースにはcut()関数があり、Hmiscにはcut2()という柔軟性があります。合理的なカラーパレットを選ぶのを助けるために、RColorBrewerパッケージは非常に貴重です。ここでx,y,zを定義した後簡単な例です:

z.cols <- cut(z, 3, labels = c("pink", "green", "yellow")) 
plot(x,y, col = as.character(z.cols), pch = 16) 

enter image description here

あなたは明らかに手動でlegendを追加することができます。残念ながら、私はすべてのタイプのプロットがcol引数のベクトルを受け入れるとは思っていませんが、type = "p"は明らかに機能します。たとえば、私にとってはplot(x,y, type = "l", col = as.character(z.cols))が単一の色として出てきます。これらのプロットでは、異なる色をlines()またはsegments()で追加するか、または使用する必要がある低レベル描画コマンドが何であれ追加できます。ベースグラフィックheretype = "l"プロットでこれを行う@Andrieの答えを見てください。

+0

cut()は等しいコンテンツ間隔で分割されますか? – ECII

+0

@ECII - デフォルトではありません。 'Hmisc ::: cut2()'は、各グループの観測の最小数を設定する 'm'引数を提供しますが、これは簡単です。 'z.cols2 < - cut2(z、m = length(z)/ 3)'のような何かがトリックを行うべきです。 – Chase

+0

cut2のg引数は良いはずはありませんか? cut2(z、g = 3)? – ECII