2013-02-13 23 views
52

私はRにかなり新しいですし、私は次のクエリを持っているで独特の色を持つ各:プロット複数行(データ系列)R

私は複数の行を持っているRでプロットを生成しようとしています(データ系列) 。これらの行のそれぞれは、カテゴリであり、私はそれがユニークな色をしたい。

現在、私のコードは、このように設定され:

まず、私は空のプロット作成しています:私のカテゴリーのそれぞれについて、次に

plot(1,type='n',xlim=c(1,10),ylim=c(0,max_y),xlab='ID', ylab='Frequency') 

を、私は使用してこの空のプロットにラインをプロットしています"for"ループはそうです:

for (category in categories){ 
lines(data.frame.for.this.category, type='o', col=sample(rainbow(10)), lwd=2) 
} 

ここには8つのカテゴリがあり、プロットには8つのラインがあります。ご覧のとおり、rainbows()関数から色をサンプリングして、各行の色を生成しようとしています。

しかし、プロットが生成されると、同じ色を持つ複数の線があることがわかります。例えば、8本のうち3本は緑色である。

どのようにしてこれらの8本の線をそれぞれ独自の色にするのですか?

また、このユニークさをプロットの伝説に反映させるにはどうすればよいですか? legend()関数を検索しようとしましたが、各カテゴリのこの固有の色を反映するためにどのパラメータを使用するべきかは不明でしたか?

ご迷惑をおかけして申し訳ございません。

+2

col = categoryを変更すると、各シリーズの色が異なることがあります。作業のサンプルデータを教えてください。これに対してggplot2は簡単なオプションです。 –

答えて

41

あなたがggplot2ソリューションをご希望の場合は、この形式にデータを形作ることができれば、あなたがこれを行うことができます(以下の例を参照)

# dummy data 
set.seed(45) 
df <- data.frame(x=rep(1:5, 9), val=sample(1:100, 45), 
        variable=rep(paste0("category", 1:9), each=5)) 
# plot 
ggplot(data = df, aes(x=x, y=val)) + geom_line(aes(colour=variable)) 

ggplot2_geom_line

21

あなたが行うための右の一般的な戦略を持っていますこれは基本的なグラフィックを使用していますが、指摘したように、基本的にRに1行ごとに10のセットからランダムな色を選択するよう指示しています。それで、同じ色で2本の線を取得することも時々あります。ここでは、ベースのグラフィックスを使用した例です。

plot(0,0,xlim = c(-10,10),ylim = c(-10,10),type = "n") 

cl <- rainbow(5) 

for (i in 1:5){ 
    lines(-10:10,runif(21,-10,10),col = cl[i],type = 'b') 
} 

enter image description here

type = "n"の使用は、すべてのウィンドウを設定するには、元のコールにプロット抑制し、ループの内側clのインデックス化します。

+0

(Imo)Rの初心者のための素晴らしいソリューション:) –

58

あなたのデータはwide formatmatplotになっている場合は、については、このために作られ、しばしば忘れられている:

dat <- matrix(runif(40,1,20),ncol=4) # make data 
matplot(dat, type = c("b"),pch=1,col = 1:4) #plot 
legend("topleft", legend = 1:4, col=1:4, pch=1) # optional legend 

などなどpchとしてプロット偶然にほとんどのggplotのようなものに慣れていない人のためおまけもあります。matplot()plot()として使用して同じです。@Arunダミーデータを使用して:)ここlatticeソリューション enter image description here

+1

ありがとう、これを指摘してくれてありがとう! – SirRichie

7

xyplot(val~x,type=c('l','p'),groups= variable,data=df,auto.key=T) 

enter image description here

2

をここでは

プロット()

に行を追加する方法を素敵記述されています

機能を使用して - 異なっあなたは

COL()

が必要になり、それらを色に

額面(新= T)

オプション

http://cran.r-project.org/doc/contrib/Lemon-kickstart/kr_addat.html

オプション。説明は第二及び更なるプロットの

xaxt = "N"

yaxt = "N"

を使用する余分な軸を避けるため 。

1

ここに、凡例が含まれているサンプルコードを示します(該当する場合)。私が知っている

# First create an empty plot. 
plot(1, type = 'n', xlim = c(xminp, xmaxp), ylim = c(0, 1), 
    xlab = "log transformed coverage", ylab = "frequency") 

# Create a list of 22 colors to use for the lines. 
cl <- rainbow(22) 

# Now fill plot with the log transformed coverage data from the 
# files one by one. 
for(i in 1:length(data)) { 
    lines(density(log(data[[i]]$coverage)), col = cl[i]) 
    plotcol[i] <- cl[i] 
} 
legend("topright", legend = c(list.files()), col = plotcol, lwd = 1, 
     cex = 0.5) 
2

、その古いポストが答えることが、私は同じポストを探しに出くわしたように、他の誰かが追加することで、同様

ここになるかもしれない:色をggplot機能では、私が達成できますプロット内に存在するグループに関連する異なる色の線。

ggplot(data=Set6, aes(x=Semana, y=Net_Sales_in_pesos, group = Agencia_ID, colour = as.factor(Agencia_ID)))  

geom_line() 

Line Graph with Multiple colors

3

一行よりもlines()関数を用い

# Create the data for the chart. 
v <- c(7,12,28,3,41) 
t <- c(14,7,6,19,3) 

# Give the chart file a name. 
png(file = "line_chart_2_lines.jpg") 

# Plot the bar chart. 
plot(v,type = "o",col = "red", xlab = "Month", ylab = "Rain fall", 
    main = "Rain fall chart") 

lines(t, type = "o", col = "blue") 

# Save the file. 
dev.off() 

出力によって同じグラフ上

enter image description hereを引き出すことができます
関連する問題