我对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来做到这一点? 感谢
答案 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;一个因素,我们也按这个因素着色
看起来像这样:
然后你可以使用ggplot主题来使它看起来更好。