调整hist.Date的x轴断点年数

时间:2016-01-25 20:15:44

标签: r plot histogram axis-labels

我想每年制作一些有意义的观察直方图。例如,以下是1970年和1971年(接近Unix时代)的几个日期:

dates <- as.Date(c("1970-01-01", "1971-08-16", "1971-12-31"))
d <- hist(dates, "years", freq=TRUE)
d$breaks  # -1 364 729

hist1

默认输出显示误导性 x -axis,偏差为1年。如果您想了解更多(PR#16679),我已在错误报告中详细说明了断点的这种行为。

我想解决R 3.2.3中的行为来制作有意义的直方图,这个例子的预期 x -axis标签是1970,1971和1972年。我试过了将断点调整一天,并重新绘制:

d$breaks <- d$breaks + 1
plot(d)

x -axis不再是Date类型。关于如何获得预期产出的任何想法?

另一个想法是将直方图的中点绘制在箱线图的每个条形图的中心,该条形图具有正确的日期。我只是不知道是否容易做到,尽管被hist返回(参见示例中的d$mids)。

2 个答案:

答案 0 :(得分:1)

我没有预料到这种行为,但这是一种解决方法:

library(lubridate)
hist(dates + dyears(1), "years", freq= TRUE)

答案 1 :(得分:0)

解决方法是显示 x -axis中的中间数,并提供this Q/A的一些提示。

# plot histogram without axes
d <- hist(dates, "years", freq=TRUE, xaxt="n")

# these Date casts are optional, and show some the structure of the breaks
d$mids <-d$mids + as.Date("1970-01-01")      # "1970-07-01" "1971-07-01"
d$breaks <- d$breaks + as.Date("1970-01-01") # "1969-12-31" "1970-12-31" "1971-12-31"

# finish off the plot
axis.Date(1, at=d$mids)
axis(2)
box(bty="l")

mids