【发布时间】:2013-11-14 16:48:41
【问题描述】:
当数据框中只有 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 轴标签,并且仍然让它在小数据帧中正常工作?
【问题讨论】:
-
这似乎是
ggplot2中的一个问题。你为什么不file an issue? -
有github.com/hadley/ggplot2/issues/797 似乎是同一个问题。
-
这是一个真正有问题的领域,即使这个错误看起来很少见并且孤立,因为 ggplot 通常做得很好。通过 rcharts 的一些新的基于浏览器的包也有类似的问题。轴范围选择和数字格式是图表编程中最困难的方面之一(任何人都使用 Excel - 很糟糕),而且令人钦佩的是,基本图形在大多数情况下都能正确处理。除了速度,这是不将基本图形扔出窗口的一个重要原因,但公平地说,ggplot2 轴训练对我来说是这个包的巨大好处。