79735233

Date: 2025-08-14 10:03:36
Score: 1.5
Natty:
Report link

It's a bit of a workaround, but I think this answer might help: https://stackoverflow.com/a/58273676/15545685

Applied to your case:

library(tidyverse)
library(ggforce)

dat <- data.frame(
  date = seq(as.Date('2024-01-01'),
             as.Date('2024-12-31'),
             '1 day'),
  value = rnorm(366, 10, 3)
)


p0 <- dat |> 
  ggplot(aes(x = date, y = value)) +
  geom_point() +
  labs(x = NULL,
       y = 'Value') +
  theme_bw(base_size = 16) +
  scale_x_date(date_labels = '%b %d') +
  facet_zoom(xlim = c(as.Date("2024-06-01"), as.Date("2024-06-20")))

p1 <- p0 + 
    scale_x_date(breaks = seq(as.Date('2024-01-01'),
                            as.Date('2024-12-31'),
                            '1 month'),
               limits = c(as.Date('2024-01-01'),
                          as.Date('2024-12-31')),
               date_labels = '%b\n%Y')

gp0  <- ggplot_build(p0)
gp1  <- ggplot_build(p1)

k <- gp1$layout$layout$SCALE_X[gp1$layout$layout$name == "x"]
gp1$layout$panel_scales_x[[k]]$limits <- gp1$layout$panel_scales_x[[k]]$range$range 

k <- gp1$layout$layout$PANEL[gp1$layout$layout$name == "x"]
gp1$layout$panel_params[[k]] <- gp0$layout$panel_params[[k]]

gt1 <- ggplot_gtable(gp1)
grid::grid.draw(gt1)
Reasons:
  • Blacklisted phrase (1): stackoverflow
  • Probably link only (1):
  • Long answer (-1):
  • Has code block (-0.5):
  • Low reputation (1):
Posted by: Kateřina Hudáčová