使用ggplot绘制数据框的所有行

时间:2015-01-27 16:44:33

标签: r ggplot2

我对R很新,我可能会有一个相当“愚蠢的问题”。

我有一个数据框,包含10个传感器的多次测量(名为X1,X2,... X10)。每个行号表示试用号。因此,例如,如果我们假设我们有7个试验,那么数据框看起来像这样:

    X1  X2  X3  X4  X5  X6  X7  X8  X9  X10
1   5   2   6   0   10  10  3   1   8   9
2   1   2   2   10  1   0   8   2   5   5
3   9   0   0   8   7   9   10  3   3   5
4   10  9   5   6   7   9   0   9   8   6
5   1   4   2   4   3   10  8   0   1   7
6   5   2   10  7   6   0   4   1   8   7
7   10  2   2   1   4   3   2   4   6   2

我想将所有行绘制在一起。例如,对于第一次试验,x将是1:10,y是数据框的第一行。

我知道一些方法可以做到这一点,但我怎样才能使用ggplot来做到这一点? 感谢

1 个答案:

答案 0 :(得分:8)

您需要做的是将数据帧重组为长格式。有很多方法可以做到这一点。一个快速的可能是使用reshape2包,例如

您的数据:

df <- read.table(text="    X1  X2  X3  X4  X5  X6  X7  X8  X9  X10
1   5   2   6   0   10  10  3   1   8   9
2   1   2   2   10  1   0   8   2   5   5
3   9   0   0   8   7   9   10  3   3   5
4   10  9   5   6   7   9   0   9   8   6
5   1   4   2   4   3   10  8   0   1   7
6   5   2   10  7   6   0   4   1   8   7
7   10  2   2   1   4   3   2   4   6   2", header=T)


library(reshape2)
df <- melt(df)  #the function melt reshapes it from wide to long
df$rowid <- 1:7  #add a rowid identifying variable

您的数据框现在如下所示:

head(df, 10)

#   variable value rowid
#1        X1     5     1
#2        X1     1     2
#3        X1     9     3
#4        X1    10     4
#5        X1     1     5
#6        X1     5     6
#7        X1    10     7
#8        X2     2     1
#9        X2     2     2
#10       X2     0     3

然后你可以绘制这个

library(ggplot2)

散点图:

ggplot(df, aes(variable, value, group=factor(rowid))) + geom_point(aes(color=factor(rowid)))

折线图:

ggplot(df, aes(variable, value, group=factor(rowid))) + geom_line(aes(color=factor(rowid)))

变量是你的x轴, 值是你的y轴。 我已经制作了变量&rownt&#39;一个因素,我们也按这个因素着色

看起来像这样:

enter image description here

然后你可以使用ggplot主题来使它看起来更好。