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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ggplot2使用单独的日期和可变数据帧按日期绘制时间序列r相关的知识,希望对你有一定的参考价值。

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

有什么建议?

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)

y <-as.data.frame(y)

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

a <- ggplot(date, aes(y))
a + geom_freqpoly()
答案

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

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

以上是关于ggplot2使用单独的日期和可变数据帧按日期绘制时间序列r的主要内容,如果未能解决你的问题,请参考以下文章

制作 ggplot2 图表,其中日期列具有不同的颜色

用单独的线型在 ggplot2 中绘制缺失值

R语言ggplot2可视化:可视化所有日期不同时段任务的持续时间将持续时间绘制成一条线(起始时间到结束时间),y轴表示活动发生的日期,x轴表示以小时为单位的时间适应时间段跨越多天的情况

R:将日期从每天转换为每周并绘制它们

按年份将数据汇总为每月计数

根据可变日期查询数据仓库