R语言 使用ggplot [duplicate]绘制多列的时间序列

ttp71kqs  于 2023-05-20  发布在  其他
关注(0)|答案(1)|浏览(106)

此问题已在此处有答案

Plot multiple columns on the same graph in R [duplicate](4个答案)
5年前关闭。
我有一个 Dataframe ,其中包含一列时间序列数据和9个其他变量,每个时间的信号强度值,见下文:

head(RTWP_Columns)
    Period.Start.Time DU0362U09A3 DU0362U09B3 DU0362U09C3 DU0362U21A1 DU0362U21A2 DU0362U21B1 DU0362U21B2 DU0362U21C1
1 01.16.2017 00:00:00     -104.54     -106.43     -104.40     -104.48     -103.04     -104.50     -103.58     -104.10
2 01.16.2017 00:15:00     -104.98     -106.49     -104.48     -104.47     -103.40     -104.50     -103.81     -104.22
3 01.16.2017 00:30:00     -105.34     -106.45     -104.50     -104.50     -103.23     -104.50     -104.01     -104.26
4 01.16.2017 00:45:00     -105.30     -106.48     -104.48     -104.50     -103.38     -104.41     -104.10     -104.32
5 01.16.2017 01:00:00     -104.99     -106.49     -104.50     -104.50     -103.44     -104.50     -104.36     -104.24
6 01.16.2017 01:15:00     -105.33     -106.49     -104.49     -104.50     -103.82     -104.50     -104.39     -104.39
  DU0362U21C2
1      -97.48
2      -99.18
3     -101.04
4     -101.76
5     -101.75
6     -101.97

我希望将每个变量绘制为单个图形中的一条线,并根据它们的变量名称为它们着色。
使用run of the mill plot()和qplot()进行绘图很好,但当涉及到美学时,我有很大的困难,因为我是一个R新手用户。
如何绘制数据框,使时间位于X轴上,而列显示为单独的线?既然我的时间是类型因素,这是我悲伤的原因吗?我已经为我的时间创建了一个单独的posixct,但我不能在ggplot中绘制这个。
下面是我的dataframe的结构:

str(RTWP_Columns)
'data.frame':   672 obs. of  10 variables:
 $ Period.Start.Time: Factor w/ 672 levels "01.16.2017 00:00:00",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ DU0362U09A3      : num  -105 -105 -105 -105 -105 ...
 $ DU0362U09B3      : num  -106 -106 -106 -106 -106 ...
 $ DU0362U09C3      : num  -104 -104 -104 -104 -104 ...
 $ DU0362U21A1      : num  -104 -104 -104 -104 -104 ...
 $ DU0362U21A2      : num  -103 -103 -103 -103 -103 ...
 $ DU0362U21B1      : num  -104 -104 -104 -104 -104 ...
 $ DU0362U21B2      : num  -104 -104 -104 -104 -104 ...
 $ DU0362U21C1      : num  -104 -104 -104 -104 -104 ...
 $ DU0362U21C2      : num  -97.5 -99.2 -101 -101.8 -101.8 ...

我已经使用了下面的plot函数,但我不能将其转换为ggplot等效函数:

plot(times,RTWP_Columns$DU0362U09A3,
       type = "l",
       lwd=2,col="red",
       xlab = "Time",
       ylab = "RTWP (dBm)",
       main = "RTWP Plot for DU0362")
lines(times,RTWP_Columns$DU0362U09B3, col="green",lwd=2)
lines(times,RTWP_Columns$DU0362U09C3, col="blue",lwd=2)
lines(times,RTWP_Columns$DU0362U21A1, col="orange",lwd=2)
lines(times,RTWP_Columns$DU0362U21A2, col="purple",lwd=2)
lines(times,RTWP_Columns$DU0362U21B1, col="black",lwd=2)
lines(times,RTWP_Columns$DU0362U21B2, col="cyan",lwd=2)
lines(times,RTWP_Columns$DU0362U21C1, col="yellow",lwd=2)
lines(times,RTWP_Columns$DU0362U21C2, col="pink",lwd=2)

其中times是RTWP_Columns中period.start.time的posixct等价物。
如果你能提供一个正确的方向,我将不胜感激。

yuvru6vn

yuvru6vn1#

就像这样

library(ggplot2)
library(reshape2)
meltdf <- melt(df, id="Time")
ggplot(meltdf, aes(x=Time, y=value, colour=variable, group=variable)) + geom_line()

查看详情Plotting multiple time-series in ggplot

相关问题