【问题标题】:R Boxplot widthR 箱线图宽度
【发布时间】:2014-10-12 23:36:59
【问题描述】:

我在 R 中绘制散点图并想添加箱线图。 x 轴是日期,y 轴是权重。我想随着时间的推移可视化体重,因此每周都应该有一个箱线图。但是,箱线图的宽度太小。这是我目前拥有的:

箱线图是这样绘制的:

data <- read.table("weight2.txt", header=TRUE)
data$datetime <- strptime(paste(data$Date, data$Time), "%d.%m.%Y %H:%M")
data$week <- strftime(data$datetime,format="%W")
data$timestamp <- as.numeric(data$datetime)

plot(data$datetime, data$Weight, xlab="Date",
    ylab="Weight", ylim=c(61,68))

library(plyr)
dt <- data.table(data)

aggrWeek <- ddply(dt,~week,summarise,
              min=min(Weight),
              firstQ=quantile(Weight,0.25),
              mean=mean(Weight),
              thirdQ=quantile(Weight,0.75),
              max=max(Weight),
              timestamp=mean(timestamp))
aggrWeek$datetime <- as.POSIXct(aggrWeek$timestamp, origin="1970-01-01")

boxplotData <- t(
    data.frame(aggrWeek$min, aggrWeek$firstQ, aggrWeek$mean, aggrWeek$thirdQ, aggrWeek$max))

bxp(list(
  stats=data.matrix(boxplotData), n=rep(1,ncol(boxplotData))), 
    add=TRUE, at=aggrWeek$datetime, show.names=FALSE)

weight2.txt

如何使箱线图的宽度变大?

【问题讨论】:

  • 使用width参数到bxp()?
  • 请提供包含示例数据的reproducible example。我的猜测是 width=boxwex= 正在工作,但如果您的日期值是 POSIXct,那么您将它们设置得太小
  • 相应地更新了帖子。

标签: r date plot boxplot


【解决方案1】:

正如我所想的那样,您的 x 值是 POSIXt 日期,它们存储为自 1970 年 1 月 1 日以来的秒数。因此,如果您的宽度为 1,那么您实际上是在绘制一个“1 秒”宽的箱线图,在此范围内非常小。如果您想要一个大约“1 天”宽的箱形图,请尝试

bxp(list(
  stats=data.matrix(boxplotData), n=rep(1,ncol(boxplotData))), 
    add=TRUE, at=aggrWeek$datetime, show.names=FALSE, boxwex=60*60*24)

通过一个可重现的例子,看看这有多容易!

【讨论】:

    猜你喜欢
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多