繁体   English   中英

ggplot2每周的箱线图

[英]ggplot2 boxplots by week

这段代码产生一个箱形图:

df <- data.frame(value = rnorm(62), my.date = seq(as.Date("2013-12-01"), as.Date("2014-01-31"), by="1 day"))

library(ggplot2)
ggplot(df, aes(as.Date(my.date), value)) + geom_boxplot() + scale_x_date(minor_breaks = "1 week", labels = date_format("%W\n%b"))

在此处输入图片说明

在12月1日至1月31日之间,每周如何制作具有单个箱形图的图? 因此,在单个图中,应该有大约8个箱形图。 倾向于使用ggplot()scale_x_date()解决方案。

一种选择是在使用ggplot之前转换日期

library(ggplot2)
df <- data.frame(value = rnorm(62), 
my.date = seq(as.Date("2013-12-01"), as.Date("2014-01-31"), by="1 day"))
weeks <- format(df$my.date, "%Y/%W")
weeks <- factor(weeks, levels = unique(weeks))

ggplot(df, aes(weeks, value)) +
    geom_boxplot()
library(ggplot2)    
ggplot(df, aes(format(as.Date(my.date), "%W\n%b"), value)) + geom_boxplot()  

编辑:

订购日期:

ggplot(df, aes(reorder(format(as.Date(my.date), "%W\n%b"), 
                       as.Date(my.date)), 
               value)) + 
  geom_boxplot() 

这满足了scale_x_date保留scale_x_date功能的scale_x_date

library('scales')
library(ggplot2)
df <- data.frame(value = rnorm(62), my.date = seq(as.Date("2013-12-01"), as.Date("2014-01-31"), by="1 day"))
ggplot(df, aes(x=as.Date(my.date), y=value, group=format(as.Date(my.date),"%W-%b"))) + geom_boxplot() + scale_x_date(date_breaks = "1 week", date_labels="%Y-%b-%d")

使用scale_x_date的箱线图

另外,如果您不希望按周#对数据进行分组(这使您可以了解大多数新的一年的情况),则可以按如下所示按周进行分组。 从星期日的周末(例如星期五)进行调整,可以使用某些代码代码ceiling_date(x, "week") + ifelse(weekdays(x) %in% c("Saturday", "Sunday"), 5, -2)

ggplot(df, aes(x=as.Date(my.date), y=value, group=ceiling_date(my.date, "week"))) + geom_boxplot() + scale_x_date(date_breaks = "1 week", date_labels="%Y-%b-%d")

周日周末分组

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM