2017-04-24 5 views
0

私は1日あたりX_1、X_2、... X_Nの値を含むN列(あらかじめわかっていない)のデータフレームを持っています。私はX_1、X_2、...これは、ハードワイヤーにコードを持たずにabitary N、すなわち達成することができる方法X_Nggplotに複数のデータを追加しますか?

colors_list <- palette(rainbow(length(N))) 
p <- ggplot(Store_Data.df, aes(x = Day)) + ylab(label="Value") + xlab("Time") + 
geom_line(aes(y = Data.df$V1, colour=colors_list[1])) + 
geom_line(aes(y = Data.df$V2 colour=colors_list[2])) + 
. 
. 
. 
geom_line(aes(y = Data.df$V2 colour=colors_list[N])) 

をプロットすることができるようにする必要があります。私はすなわち

colors_list <- palette(rainbow(length(N))) 
p <- ggplot(Store_Data.df, aes(x = Day)) + ylab(label="Value") + xlab("Time") 
for (i in 1:N){ 
    p <- p + geom_line(aes(y = Data.df$[,i], colour=colors_list[i])) 
} 

しかしプロットは、値の最後のセットを示し、列データをループしようとした、すなわちY = Data.df $ [N]。これはどうすればできますか?

+0

あなたの質問に答えるためのガイドとして、再現可能な例を作成する方法については、[こちら](http://stackoverflow.com/questions/5963269)をご覧ください。 –

答えて

0

ggplotは、ワイドフォーマットではなくロングフォーマットに基づいているため、1つのカラムをy変数として割り当てることができます。

最も簡単な方法は、データを長い形式に、次に色でグループ分けすることです。

ここでは、Rのswissデータセットとreshapeパッケージのmelt関数を使用した簡単な例を示します。あなたもあなたのループを必要としない。このように

require(reshape2) 
swiss_soldiers<-swiss #data in wide format 
swiss_soldiers<- melt(swiss_soldiers, "Fertility") #Reshape to long format, using "Fertility" as x variable 
head(swiss_soldiers) 
    Fertility variable value 
1  80.2 Agriculture 17.0 
2  83.1 Agriculture 45.1 
3  92.5 Agriculture 39.7 
4  85.8 Agriculture 36.5 
5  76.9 Agriculture 43.5 
6  76.1 Agriculture 35.3 
ggplot(swiss_soldiers)+aes(x=Fertility, y=value, colour=variable)+geom_point()+geom_smooth(method = "lm") 
#A graph containing the individual data as points plus a linear trendline 

A graph containing the individual data as points plus a linear trendline

関連する問題