Два графика с одинаковыми аргументами имеют разные оси x в ggplot. - PullRequest
0 голосов
/ 05 августа 2020

Я хочу создать два графика с одинаковыми метками оси x, а затем использовать plot_grid() для их выравнивания.

Вот как выглядит результат в настоящее время:

введите описание изображения здесь

Как видите, ось x верхнего графика начинается в марте (это я то, что я хочу), но ось x нижнего графика начинается в январе. Я использовал ту же самую строку кода, определяющую ось x для обоих графиков: scale_x_date(date_breaks = "3 month", date_labels = "%m-%Y", expand = c(0, 0)).

Вот код ggplot для двух графиков:

Код верхнего графика :

PS_color <- c("Precipitation" = "blue", "Snowdepth" = "red")
 tmp <- ggplot(dfQ1, aes(x = Date)) + 
  geom_col(aes(y = Precipitation, color = "Precipitation")) + 
  geom_col(aes(y = Snowdepth, color = "Snowdepth")) + 
  labs(x = "Month-Year", 
       y = "Precipitation [mm] and snowdepth [cm]", 
       color = "Legend") + 
  scale_color_manual(values = PS_color, labels = c("Precipitation", "Snow depth")) + 
  scale_x_date(date_breaks = "3 month", date_labels = "%m-%Y", expand = c(0, 0)) + 
  theme_bw() + 
   theme(panel.grid.minor = element_blank(), 
         axis.line = element_line(), 
         legend.title.align = 0.5
         #legend.title = element_text(face = "bold")
   ) 

Нижний код графика:

Q_color <- c("Discharge" = "black")
plot_Q_2012_2013 <- ggplot(dfQ1, aes(x = Date)) +  
  geom_line(aes(y = Discharge, color = "Discharge")) + 
  labs(x = "Month-Year", 
       y = "Discharge [mm]",
       color = "Legend") +  
   scale_color_manual(values = Q_color) +
   scale_x_date(date_breaks = "3 month", date_labels = "%m-%Y", expand = c(0, 0)) + 
   scale_y_continuous(limits = c(0,17), expand = c(0,0)) + 
  theme_bw() + 
  deforestation_period + 
  theme(panel.grid.minor = element_blank(), 
        axis.line = element_line(), 
        legend.title.align = 0.5
        #legend.title = element_text(face = "bold")
  )

Код для выравнивания обоих графиков:

rev_plot <- tmp + scale_y_reverse(limits = c(83,0), expand = c(0,0))
plot_grid(rev_plot, plot_Q_2012_2013, nrow = 2) 

К сожалению, я не могу опубликовать два кадра данных полностью, потому что здесь будет слишком много символов для публикации.

Вы знаете, как я могу это исправить? Буду очень признателен за помощь!

1 Ответ

1 голос
/ 05 августа 2020

Так же, как Роман, упомянутый в комментариях, указав, что breaks сработало. Таким образом, я создал вектор, содержащий даты с:

Dates <- c("2012-03-01", "2012-06-01", "2012-09-01", "2012-12-01", 
           "2013-03-01", "2013-06-01", "2013-09-01", "2013-12-01")
Date1 <- as.Date(Dates) 

Затем я написал:

scale_x_date(breaks = Date1, date_labels = "%m-%Y", expand = c(0, 0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...