我想每年制作一些有意义的观察直方图。例如,以下是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
默认输出显示误导性 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
)。
答案 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")