2011-09-19 10 views
35

データセットでは、2つの属性を取り、監視された散布図を作成します。誰もが各クラスに異なる色を与える方法を知っていますか?Rの散布図の各クラスに色を付ける方法は?

私はplotコマンドでcol == c("red","blue","yellow")を使用しようとしていますが、もう1つの色が含まれているかどうかはわかりませんが、私は3つのクラスしか持っていません。

おかげ

答えて

2

あなたがデータフレームまたはマトリックスで分離クラスを持っている場合は、あなたがmatplotを使用することができます。我々は

dat<-as.data.frame(cbind(c(1,2,5,7),c(2.1,4.2,-0.5,1),c(9,3,6,2.718))) 

plot.new() 
plot.window(c(0,nrow(dat)),range(dat)) 
matplot(dat,col=c("red","blue","yellow"),pch=20) 

を持っている場合たとえば、あなたはdatの最初の列は、赤、青における第二、および黄色で第三にプロットされた散布図を得るでしょう。もちろん、カラークラスのx値とy値を別々にする場合は、datxdatyなどがあります。

別の方法として、どの色を指定するかを指定することもできます余分な色のベクトル、ループをforループといくつかのifブランチで反復して塗りつぶします)。たとえば、これはあなたに同じプロットを取得します:

dat<-as.data.frame(
    cbind(c(1,2,5,7,2.1,4.2,-0.5,1,9,3,6,2.718) 
    ,c(rep("red",4),rep("blue",4),rep("yellow",4)))) 

dat[,1]=as.numeric(dat[,1]) #This is necessary because 
          #the second column consisting of strings confuses R 
          #into thinking that the first column must consist of strings, too 
plot(dat[,1],pch=20,col=dat[,2]) 
9

一つの方法は)格子パッケージとxyplotを(使用することです:

R> DF <- data.frame(x=1:10, y=rnorm(10)+5, 
+>     z=sample(letters[1:3], 10, replace=TRUE)) 
R> DF 
    x  y z 
1 1 3.91191 c 
2 2 4.57506 a 
3 3 3.16771 b 
4 4 5.37539 c 
5 5 4.99113 c 
6 6 5.41421 a 
7 7 6.68071 b 
8 8 5.58991 c 
9 9 5.03851 a 
10 10 4.59293 b 
R> with(DF, xyplot(y ~ x, group=z)) 

変数zを経由して、明示的なグループ化情報を与えることによって、あなたは別の取得します色。色などを指定することができます。格子のドキュメントを参照してください。

ここzは、我々はレベル(==数値インデックス)を取得しているため因子変数なので、あなたも

R> with(DF, plot(x, y, col=z)) 

を行うことができますが、それは、xyplot()少なくとも:)そして、私には(あまり透明であり、 et al。

13

ここにはthis pageに基づいて作成した例があります。

library(e1071); library(ggplot2) 

mysvm  <- svm(Species ~ ., iris) 
Predicted <- predict(mysvm, iris) 

mydf = cbind(iris, Predicted) 
qplot(Petal.Length, Petal.Width, colour = Species, shape = Predicted, 
    data = iris) 

これにより、出力が得られます。あなたはこの図から間違って分類された種を簡単に見つけ出すことができます。ここで

enter image description here

52

伝統的なグラフィックス(とダークのデータ)を使用したソリューションです。

> DF <- data.frame(x=1:10, y=rnorm(10)+5, z=sample(letters[1:3], 10, replace=TRUE)) 
> DF 
    x  y z 
1 1 6.628380 c 
2 2 6.403279 b 
3 3 6.708716 a 
4 4 7.011677 c 
5 5 6.363794 a 
6 6 5.912945 b 
7 7 2.996335 a 
8 8 5.242786 c 
9 9 4.455582 c 
10 10 4.362427 a 
> attach(DF); plot(x, y, col=c("red","blue","green")[z]); detach(DF) 

これはDF$zが要因であるので、それによってサブセット化する場合、その値があるという事実に依存しています整数として扱われます。だから、次のように色ベクトルの要素はzによって異なります:

> c("red","blue","green")[DF$z] 
[1] "green" "blue" "red" "green" "red" "blue" "red" "green" "green" "red"  

をあなたはlegend機能を使用して凡例を追加することができますクラス変数を仮定し

legend(x="topright", legend = levels(DF$z), col=c("red","blue","green"), pch=1) 
+1

はどのようにして伝説の機能を使用して凡例を追加できますか? –

+2

@ tommy.carstensen凡例を追加しました – Aniko

+0

グループが多く、各色を指定したくない場合は、_grDevices_'colorRampPalette'関数を使用してみてください。 [link](http://r.789695.n4.nabble.com/alternatives-to-RColorBrewer-td852872.html) – Rnoob

0

をzと、あなたが使用することができます。

with(df, plot(x, y, col = z)) 

ただし、Rが内部的に整数を整数として格納するため、zは因子変数であることが重要です。

この方法で、1は、3「緑で、2は「赤」で、「ブラック」です....

関連する問題