【问题标题】:ggplot: date axis. How to set limits? [duplicate]ggplot:日期轴。如何设置限制? [复制]
【发布时间】:2023-03-30 21:31:01
【问题描述】:

看看这个情节:

require(tidyverse)
require(lubridate)

(
  tibble(
    date = ymd("2019/12/31") + 1:366,
    value = rnorm(1:366))
  %>% ggplot(aes(date, value))
   +  geom_line()
   +  scale_x_date("Day", date_labels = "%b %d", date_breaks = "10 days")
   +  theme(axis.text.x = element_text(angle = 45, hjust = 1))
)

我想将新的原点 x 轴设置为从 1 月 1 日开始,到 12 月 31 日结束。

我试过这个:

(
  tibble(
    date = ymd("2019/12/31") + 1:366,
    value = rnorm(1:366))
  %>% ggplot(aes(date, value))
   +  geom_line()
   +  scale_x_date("Day", date_labels = "%b %d", date_breaks = "10 days"
                   , limits = ymd(c("2020/01/01", "2020/12/31")))
   +  expand_limits(x = ymd(c("2020/01/01", "2020/12/31")))
   +  theme(axis.text.x = element_text(angle = 45, hjust = 1))
)

但它不起作用......(没有任何变化)

【问题讨论】:

标签: r ggplot2


【解决方案1】:

也许这就是你要找的。通过限制您设置数据的范围。但是,您必须记住,默认情况下 ggplot2 将连续轴每侧扩展 5%。扩展量可以通过expand 参数设置。此外,如果您想要一个特定的开始和/或结束年龄,那么我建议您通过 breaks 争论而不是使用 date_breaks 来设置休息时间:

library(lubridate)
library(ggplot2)
library(tibble)

set.seed(42)
tibble(
  date = ymd("2019/12/31") + 1:366,
  value = rnorm(1:366)) %>% 
  ggplot(aes(date, value)) +
  geom_line() + 
  scale_x_date("Day", breaks = seq(ymd("2020/01/01"), ymd("2020/12/31"), by = "10 days"), date_labels = "%b %d",
               limits = ymd(c("2020/01/01", "2020/12/31")),
               expand = c(0, 0)) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

【讨论】:

  • 大声笑,我只是在同一秒钟内发布相同的内容:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
相关资源
最近更新 更多