如何增加情节的日期范围以在系列结束时为 geom_text 腾出空间?

Posted

技术标签:

【中文标题】如何增加情节的日期范围以在系列结束时为 geom_text 腾出空间?【英文标题】:how to increase date range of a plot to make room for geom_text at the end of series? 【发布时间】:2021-07-31 00:37:03 【问题描述】:

我正在尝试使用 geom_text 在最后为我的系列添加标签,为此我尝试增加 x 轴范围 为系列标签腾出空间,但它没有增加其范围为scale_x_date

数据

library(tidyverse)
library(lubridate)
library(scales)

file_url1 <- "https://raw.githubusercontent.com/johnsnow09/covid19-df_stack-code/main/rtpcr_test_daily_pct.csv"

rtpcr_test_daily_pct <- read.csv(url(file_url1))

rtpcr_test_daily_pct <- rtpcr_test_daily_pct %>%
  mutate(Updated.On = as.Date(Updated.On))

以下是我尝试过的代码,无论我使用 scale_x_date() 为 x 轴日期添加什么值,x 轴框架都保持不变。

我不确定我在下面尝试过的代码有什么问题:

rtpcr_test_daily_pct %>% 
  
  filter(!is.na(pct_rtpcr),
         pct_rtpcr > 0 ) %>% 
  
  ggplot(aes(x = Updated.On, 
             y = pct_rtpcr,
             col = State) 
         ) +
  geom_line(size = 1) +
  
  geom_text(data = rtpcr_test_daily_pct %>% 
              filter(Updated.On == max(Updated.On)-1),
            aes(label = State, 
                x = Updated.On , 
                y = pct_rtpcr ),
            vjust = -1,  
            size = 3) +
  
  scale_y_continuous(labels = percent,
                     breaks = seq(.1,1, by = .1)) +
  
  expand_limits(y = .1 ) + # 
  scale_x_date(aes(limits = as.Date(c("2021-03-01",max(Updated.On) + 15)))) +
  
  theme_minimal() +
  theme(legend.position = "none") +
  
  labs(title = "% RTPCR testing Between Karnataka & Delhi- Mar'21 onwards") +
  coord_equal(ratio = 70)

【问题讨论】:

【参考方案1】:

使用:

scale_x_date(limits = c(as.Date("2021-03-01"),max(rtpcr_test_daily_pct$Updated.On) + 15))

完整代码-

library(tidyverse)

rtpcr_test_daily_pct %>% 
  filter(!is.na(pct_rtpcr),
         pct_rtpcr > 0 ) %>% 
  ggplot(aes(x = Updated.On, 
             y = pct_rtpcr,
             col = State) 
  ) +
  geom_line(size = 1) +
  geom_text(data = rtpcr_test_daily_pct %>% 
              filter(Updated.On == max(Updated.On)-1),
            aes(label = State, 
                x = Updated.On , 
                y = pct_rtpcr ),
            vjust = -1,  
            size = 3) +
  scale_y_continuous(labels = percent,
                     breaks = seq(.1,1, by = .1)) +
  expand_limits(y = .1 ) + # 
  scale_x_date(limits = c(as.Date("2021-03-01"),max(rtpcr_test_daily_pct$Updated.On) + 15)) + 
  theme_minimal() +
  theme(legend.position = "none") +
  labs(title = "% RTPCR testing Between Karnataka & Delhi- Mar'21 onwards") +
  coord_equal(ratio = 70)

【讨论】:

感谢@Ronak,我实际上在在这里发布问题之前尝试了rtpcr_test_daily_pct$Updated.On,但我想我并没有同时删除aes()。再次感谢您的帮助!!

以上是关于如何增加情节的日期范围以在系列结束时为 geom_text 腾出空间?的主要内容,如果未能解决你的问题,请参考以下文章

在使用 gghighlight 时为几个 geom_hlines 创建图例

如何在 type2 维度表上应用日期范围过滤器?

如何将字符串日期范围更改为开始和结束日期?

如何在 Twitter 引导日期选择器中禁用结束日期范围?

具有二进制变量和 x 轴日期和长数据格式的 ggplot geom_vline

使用 geom_col() 时如何对 y 结果进行排序?