2

当数据框中只有 2 行时,ggplot2 中的日期格式存在问题:

> dt <- Sys.Date() - 0:1
> dt
[1] "2013-11-14" "2013-11-13"
> vals <- 0:1
> df <- data.frame(dt, vals)
> df
          dt vals
1 2013-11-14    0
2 2013-11-13    1
> class(df[, 1])
[1] "Date"
> class(df[, 2])
[1] "integer"
> g <- ggplot(df, aes(x = dt, y = vals)) + geom_line()
> plot(g)

在此处输入图像描述

看看 x 轴日期标签是如何变得奇怪的。

然而这很好用:

> dt <- Sys.Date() - 0:9
> vals <- 0:9
> df <- data.frame(dt, vals)
> df
           dt vals
1  2013-11-14    0
2  2013-11-13    1
3  2013-11-12    2
4  2013-11-11    3
5  2013-11-10    4
6  2013-11-09    5
7  2013-11-08    6
8  2013-11-07    7
9  2013-11-06    8
10 2013-11-05    9
> g <- ggplot(df, aes(x = dt, y = vals)) + geom_line()
> plot(g)

在此处输入图像描述

在糟糕的版本中,它看起来像是两次覆盖了时间。我想我可以(以某种方式)抑制时间分量,但是有没有办法避免完全修改 x 轴标签,并且仍然让它对小数据帧正常工作?

4

1 回答 1

1

我会说这是一些错误。但解决方案是添加scale_x_date()然后date_format()从库中使用scales以根据需要设置标签。

library(scales)
ggplot(df, aes(x = dt, y = vals)) + geom_line()+
  scale_x_date(labels = date_format("%b %d"))

在此处输入图像描述

于 2013-11-14T17:00:52.217 回答