假设我们有以下简单的日期-值对数据框,其中序列中缺少一些日期(即1月12日至1月14日)。当我绘制点时,它在x轴上显示了这些缺失的日期,但是没有与这些日期相对应的点。我想防止这些丢失的日期显示在x轴上,以便点序列没有间断。有关如何执行此操作的任何建议?谢谢!

dts <- c(as.Date( c('2011-01-10', '2011-01-11', '2011-01-15', '2011-01-16')))
df <- data.frame(dt = dts, val = seq_along(dts))
ggplot(df, aes(dt,val)) + geom_point() +
        scale_x_date(format = '%d%b', major='days')

最佳答案

然后将日期数据变成一个因子。目前,ggplot会按照您告诉数据的含义来解释数据-连续的日期范围。您不想要该比例,而是想要一个绝对比例:

require(ggplot2)
dts <- as.Date( c('2011-01-10', '2011-01-11', '2011-01-15', '2011-01-16'))
df <- data.frame(dt = dts, val = seq_along(dts))
ggplot(df, aes(dt,val)) + geom_point() +
        scale_x_date(format = '%d%b', major='days')

相对
df <- data.frame(dt = factor(format(dts, format = '%d%b')),
                  val = seq_along(dts))
ggplot(df, aes(dt,val)) + geom_point()

产生:

那是你想要的吗?

关于R + ggplot2 : how to hide missing dates from x-axis?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5169366/

10-12 17:32