【问题标题】:How to adjust time scale axis for ggplot histogram如何调整ggplot直方图的时间尺度轴
【发布时间】:2011-01-25 10:38:45
【问题描述】:

我正在使用其中一列包含POSIXct 日期时间值的数据框。我正在尝试使用ggplot2 绘制这些时间戳的直方图,但我遇到了两个问题:

  1. 我不知道如何在geom_histogram() 中设置binwidth。我想将每个垃圾箱设置为一天或一周。我尝试提供一个 difftime 对象,但出现错误。我也尝试了binwidth=1,但 R 只是挂起。

  2. 如何在scale_x_time() 中设置限制?我可以让它工作的唯一方法是使用as.Date() 转换我的POSIXct 时间戳。

【问题讨论】:

标签: r plot ggplot2


【解决方案1】:
  1. binwidth 以秒为单位,因此设置为每周 bin 设置 binwidth=7*24*60*60
  2. 限制可以作为 2 个 POSIXct 对象的向量给出。

一个例子:

y<-as.POSIXct('1970/01/01')+cumsum(rnorm(100,mean=24*60*60,sd=24*60*60))
p<-qplot(y,binwidth=7*24*60*60,fill=I('steelblue'),col=I('black'))
p<-p+scale_x_datetime(major="1 week",
                      minor="1 days",
                      format="%e/%m/%Y",
                      limits=c(as.POSIXct('1970/02/01'),
                               as.POSIXct('1970/03/31')))
print(p)

【讨论】:

  • %d 给出前导零,而 %e 在个位数天给出前导空格。不太确定哪个更好看。
  • 谢谢!我的比例问题是由于我使用 scale_x_time() 而不是 scale_x_datetime()。
  • 谢谢 - 就我而言,当数据类型为 POSIXct 时,我没有意识到 binwidth 以秒为单位。所以当我设置 binwidth=1 时,情节永远不会完成,因为它太细了。
猜你喜欢
  • 1970-01-01
  • 2020-08-31
  • 2015-07-18
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 2016-02-29
  • 2019-03-06
  • 1970-01-01
相关资源
最近更新 更多