如何在R中制作时间序列箱图

时间:2014-03-13 19:57:49

标签: r ggplot2

我正在尝试使用ggplot2制作时间序列箱图。

我对很多人都有价值观。

我需要按月用我的数据制作一个时间序列箱图。

我认为我的问题是如何用我的数据创建一个因子(月)。

p <- ggplot(mydata, aes(factor(date), measure))

enter image description here

3 个答案:

答案 0 :(得分:9)

另一种方法是在不必更改日期格式和进行任何排序等的情况下执行此操作,只需将日期添加为分组因子,如下所示:

ggplot(mydata) + geom_boxplot(aes(x = date, y = measure, group = date))

答案 1 :(得分:2)

更新:根据OP的说明,多年必须单独处理。

library(ggplot2)

#generate dummy data
date_range <- as.Date("2010/06/01") + 0:400
measure <- runif(401)
mydata <- data.frame(date_range, measure)

# create new columns for the months and years, and 
# and a year_month column for x-axis labels
mydata$month <- format(date_range, format="%b")
mydata$year <- as.POSIXlt(date_range)$year + 1900
mydata$year_month <- paste(mydata$year, mydata$month)
mydata$sort_order <- mydata$year *100 + as.POSIXlt(date_range)$mon

#plot it
ggplot(mydata) + geom_boxplot(aes(x=reorder(year_month, sort_order), y=measure))

哪个产生: enter image description here

希望这有助于你前进。

答案 2 :(得分:1)

我创建了一个函数来创建你需要的图。

功能是:

ts_plot_season <- function(x = x) {
season <- cycle(x)
season.factor <- factor(season)
ggplot() + 
  geom_boxplot(mapping = aes(x = season.factor,
                             y = x)) +
  labs(x = "Periodo", y =  "Serie")
}

Fox示例:

 ts_plot_season(AirPassengers)

Boxplot for time series

我希望这有帮助。我知道这个问题很老,但我在网上找不到一些上帝的答案。所以我认为这对某人有帮助。