当主 x 轴为数字时,如何在辅助 x 轴上显示日期?

问题描述 投票:0回答:1

让我们举个简单的例子:

ggplot(data.table(day = 1:3, value = c(2,3,1), date = Sys.Date() + 1:3), aes(x = day)) + 
  geom_line(aes(y = value)) + 
  scale_x_date(aes(x = date), position = "top")

它抛出:

transformation$transform()
中的错误: !
transform_date()
仅适用于 类的对象

但是日期列属于 类,如 str() 所示。

我也尝试过这个方法:

ggplot(data.table(day = 1:3, value = c(2,3,1), date = Sys.Date() + 1:3), aes(x = day)) + 
  geom_line(aes(y = value)) + 
  scale_x_continuous(sec.axis = sec_axis(~ as.Date(Sys.Date() + .), labels = date_format("%Y-%m-%d")))

这显示了两种比例,但它的格式不是日期,而是数字。 (日期格式需要包装秤)。

如何才能看到底部的数字 x 轴和顶部的日期?

ggplot2
1个回答
0
投票

您可以按如下方式指定辅助轴的断点和标签:

library(ggplot2)
library(magrittr)

data.frame(
  day = 1:3, 
  value = c(2,3,1), 
  date = Sys.Date() + 1:3) %>%  
{ggplot(
  data = .,
  aes(x = day, y = value)
  ) + 
  geom_line() + 
  scale_x_continuous(
    # breaks = .$day,
    sec.axis = sec_axis(
      transform = ~ . * 1,
      breaks = .$day,
      labels = .$date)
  )}
© www.soinside.com 2019 - 2024. All rights reserved.