2014-09-22 62 views
0

我正在構建一個R函數來繪製多個Force Vs.一個圖中的位移線。這裏是我的數據集:繪製多列R中的多行

 myrows displacememnt force displacememnt force displacememnt force displacememnt force displacememnt 
[1,]  1 0.000000e+00  0 0.000000e+00  0 0.000000e+00  0 0.000000e+00  0 0.000000e+00 
[2,]  2 4.292647e-08  0 8.829379e-08  0 4.194021e-08  0 4.136511e-08  0 -3.818898e-08 
[3,]  3 1.284946e-09  0 1.343980e-07  0 4.665416e-08  0 3.375577e-08  0 -4.819687e-09 
[4,]  4 4.380121e-08  0 1.742593e-07  0 7.184801e-09  0 3.734106e-08  0 3.210356e-08 
[5,]  5 8.224440e-08  0 2.558701e-07  0 1.245641e-07  0 8.266907e-08  0 1.024775e-07 
[6,]  6 1.269747e-07  0 3.842161e-07  0 1.223706e-07  0 1.666898e-07  0 1.407497e-07 

我想要做的就是在同一個圖中繪製多個力與位移。但我不知道如何分割數據,我試圖融化功能:

meltedData <- melt(dataset,id.vars="myrows") 
> head(meltedData) 
    Var1 Var2 value 
1 1 myrows  1 
2 2 myrows  2 
3 3 myrows  3 
4 4 myrows  4 
5 5 myrows  5 
6 6 myrows  6 

這是該數據集的最小reprsentation。

任何人都可以幫助我實現我的目標,即繪製一個陰謀內的多個力v位移線?

最後的情節是什麼樣子:

enter image description here

+0

你可以使用'plot()'函數來繪製第一個系列,使用'lines()'或'points()'來添加後續系列 – Barranka 2014-09-22 15:10:08

+0

會更容易,如果有ggplot函數可以通過一次拆分兩列來判斷(force v disp)? – adic26 2014-09-22 15:12:05

+0

我認爲matplot是你想要的。 – Seth 2014-09-22 15:20:18

回答

1

提供的數據幀有你在的例子顯示相同的格式,你可以打破它與這個長的數據幀:

df <- data.frame(myrows=c(1,2,3), force=c(0, 0.1, 0.2), disp=c(0.1, 0.2, 0.3), 
    force=c(0.1, 0.2, 0.3), disp=c(0.1, 0.2, 0.3)) 

new.df <- NULL 
for (i in seq(2, ncol(df), 2)) { 
    new.df <- rbind(new.df, data.frame(no=i/2, force=df[, i], disp=df[, i+1])) 
} 

library(ggplot2) 
qplot(force, disp, group=no, data=new.df, col=factor(no), geom="line") 

enter image description here

這是醜陋的,但工程我猜。

+0

非常感謝!這就像一個魅力 – adic26 2014-09-22 17:43:50

+0

不客氣,很高興它的作品。如果可以的話,你會介意最後分享情節嗎? – andybega 2014-09-22 17:49:30

+1

完成。我爲情節的背景改變了'不'。 – adic26 2014-09-22 17:54:50