在R中绘制具有多个列的多行

时间:2014-09-22 15:05:49

标签: r plot

我正在构建一个可以绘制多个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

这是数据集的最小代表。

是否有人能够协助我实现我的目标,即在一个情节内绘制多个力v位移线?

最终情节如下:

enter image description here

1 个答案:

答案 0 :(得分:2)

如果您的数据框具有您在示例中显示的相同格式,则可以将其分解为长数据框:

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

这很难看,但我猜是有效的。