facet_zoom按日期范围从stat_summary

问题描述

我正在尝试放大特定的日期范围,但是下面的代码不允许我这样做。在此图中,Bleach的stat_summary和Species的现有构面。如果可以的话,我愿意将每个物种放大为单独的图,但我尝试按物种进行亚集,但仍然无法产生所需的结果。

structure(list(ColonyID = c("11","11","12","238","239","239"),Species = structure(c(1L,1L,2L,2L),.Label = c("Montipora capitata","Porites compressa"),class = "factor"),Bleach = structure(c(1L,1L),.Label = c("Bleach","Non-bleach"),Date = structure(c(18096,18155,18171,18185,18199,18285,18501,18096,18501),class = 
"Date"),Colorscore2 = c(3L,4L,3L,1L)),row.names = c(3L,43L,83L,123L,163L,203L,243L,44L,84L,124L,164L,204L,244L,34L,74L,114L,154L,194L,234L,274L,35L,75L,115L,155L,195L,235L,275L),class = 
"data.frame")

a <- ggplot(test,aes(x = Date,y = Colorscore2,color = Bleach)) + stat_summary(aes(group = 
Bleach),fun = mean,geom = "point") + stat_summary(aes(group = Bleach),geom = 
"line") + scale_color_manual(values = c("Bleach" = "gray","Non-bleach" = "black")) + 
scale_fill_manual(values = c("Bleach" = "gray","Non-bleach" = "black")) +. 
scale_x_date(date_breaks = "1 month",date_labels = "%b",limits = as.Date(c("2019-07-01","2020-02-01"))) + facet_grid(. ~ Species) + labs(y = "Bleaching score",x = "Date") +. 
theme_bw() 
b <- a + facet_zoom(x = Date >= "2019-09-16" & Date <= "2019-10-30")

解决方法

您的代码可能存在一些问题:

  1. 我删除了limits = as.Date(c("2019-07-01","2020-02-01")),并在filter(Date >= as.Date("2019-07-01"),Date <= as.Date("2020-02-01")) %>%之前使用了ggplot
  2. 我删除了facet_grid(. ~ Species),因为它可能不适用于facet_zoom。相反,我生成了两个单独的图,并使用ggarrange中的ggpubr组合了它们。可以简化代码,但思路相同。希望这会有所帮助。
library(tidyverse)
library(ggpubr)

a_1 <- test %>%
  filter(Date >= as.Date("2019-07-01"),Date <= as.Date("2020-02-01"),Species == "Montipora capitata"
         ) %>%
  ggplot(aes(x = (Date),y = ColorScore2,color = Bleach)) +
  stat_summary(aes(group = Bleach),fun = mean,geom = "point") +
  stat_summary(aes(group = Bleach),geom = "line") +
  scale_color_manual(values = c("Bleach" = "gray","Non-bleach" = "black")) +
  scale_fill_manual(values = c("Bleach" = "gray","Non-bleach" = "black")) +
  scale_x_date(date_breaks = "1 month",date_labels = "%b") +
  theme_bw() + 
  labs(title = "Montipora capitata")
b_1 <- a_1 + facet_zoom(xlim = c(as.Date("2019-09-16"),as.Date("2019-10-30")))

b_1
a_2 <- test %>%
  filter(Date >= as.Date("2019-07-01"),Species == "Porites compressa"
  ) %>%
  ggplot(aes(x = (Date),date_labels = "%b") +
  theme_bw()+
  labs(title = "Porites compressa")
b_2 <- a_2 + facet_zoom(xlim = c(as.Date("2019-09-16"),as.Date("2019-10-30")))
ggarrange(b_1,b_2,common.legend = TRUE)

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...