ggplot2使用单独的日期和可变日期帧r按日​​期绘制时间序列

时间:2018-02-25 05:23:28

标签: r ggplot2 time-series

我正在尝试绘制时间序列。在一个数据帧(y)中,我在列向量中有56个项目,而我有第二个具有相应日期的数据帧(日期)。我试图将时间序列绘制为y轴上的y值和x轴上的日期值。我已经尝试过使用ggplt2 geom_freqpoly的一些东西,但我无法弄明白。我对ggplot以外的其他方法持开放态度,我可以将日期和y绑定到一个日期框架中,如果它会使事情变得更容易。

有什么建议吗?

//maps.googleapis.com/maps/api/js...

1 个答案:

答案 0 :(得分:4)

以下是来自几个不同包的方法。

<强> GGPLOT2

包在数据框上效果最佳,因此我建议您使用数据创建数据框。另外,不确定为什么要使用geom_freqpoly。我认为geom_line适用于时间序列数据。

library(ggplot2)

set.seed(123)

N<- 500
M<-56

x<- matrix( rnorm(N*M,mean=23,sd=3), N, M)
y <- colMeans(x,dim=1)

Date <- seq(as.Date("2018-01-01"), as.Date("2018-02-25"), by="days")
Date <- as.POSIXct(Date, format = "%Y-%m-%d %H:%M")

dat <- data.frame(Date = Date, y = y)

ggplot(dat, aes(x = Date, y = y)) +
  geom_line() +
  theme_classic()

enter image description here

<强> ggpubr

包的扩展。我们可以使用ggline包来绘制数据。

library(ggpubr)    
ggline(data = dat, x = "Date", y = "y")

enter image description here

<强>晶格

我们还可以使用包中的xyplot函数。

library(lattice)

xyplot(y ~ Date, data = dat, type = "l")

enter image description here

<强> ggvis

包与类似,使用图形语法创建绘图。

library(ggvis)

ggvis(dat, ~Date, ~y) %>% layer_lines()

enter image description here

基础R

我们也可以使用基础R。

plot(dat$Date, dat$y, xaxt = "n", type = "l", xlab = "Date", ylab = "y")
axis.POSIXct(1, at = seq(min(dat$Date), max(dat$Date), by = "week"), format="%b %d")

enter image description here

<强> XTS

我们还可以将数据框转换为对象,然后绘制它。

library(xts)

dat.ts <- xts(dat$y, order.by = dat$Date)
plot(dat.ts)

enter image description here

<强> PerformanceAnalytics

我们还可以使用包中的chart.TimeSeries来绘制xts包。

chart.TimeSeries(dat.ts) 

enter image description here

<强> dygraphs

包可以创建交互式时间序列图。

library(dygraphs)

dygraph(dat.ts)

enter image description here

<强> plotly

我们也可以使用创建交互式情节。

library(plotly)

plot_ly(x = ~dat$Date, y = ~dat$y, mode = 'lines')

enter image description here

我们还可以使用包来创建交互式情节。

library(highcharter)

hchart(dat.ts)

enter image description here