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

Plot all rows of a data frame with ggplot

我是 R 的新手,我可能在这里 "stupid question"。

我有一个数据框,其中包含 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 来做到这一点? 谢谢

您需要做的是将数据帧重组为长格式。有很多方法可以做到这一点。一个快速的方法是使用 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-axis, 价值是你的y-axis。 我已经将变量 'rowid' 设为一个因子,我们也根据这个因子着色

看起来像这样:

然后您可以尝试使用 ggplot 主题使其看起来更漂亮。