使用 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 主题使其看起来更漂亮。
我是 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 主题使其看起来更漂亮。