https://github.com/morgankain/RRV_HostVectorCompetence
Revision db6afd7d73dafe78a400d9098a37b36e283fb6ac authored by morgankain on 26 April 2021, 22:26:42 UTC, committed by morgankain on 26 April 2021, 22:26:42 UTC
1 parent e51b89a
Raw File
Tip revision: db6afd7d73dafe78a400d9098a37b36e283fb6ac authored by morgankain on 26 April 2021, 22:26:42 UTC
cleaning up script names
Tip revision: db6afd7
25_manuscript_plots.R
#################################
### ggplot manuscript figures ###
#################################

####
## Figure 1 is the conceptual figure
####

####
## Figure 2 see "manuscript_plots_fig2_panels.R"
####

####
## Figure 3 and supplemental multi-generation plots
####

### Hosts

next_gen.gg.f.f.s.h$Next <- factor(next_gen.gg.f.f.s.h$Next, levels = rev(AUC_titer.gg.s$Host))

ggplot(next_gen.gg.f.f.s.h, aes(gen, est)) + 
  geom_line() + 
  geom_ribbon(aes(x = gen, ymin = lwr, ymax = upr), alpha = 0.2) +
  xlab("Generation") + ylab("Total Number Infected") +
  xlim(c(0, 5.3)) +
  scale_y_continuous(trans = "pseudo_log") +
# geom_dl(aes(label = Next, colour = Next), method = list(dl.trans(x = x + .3), "last.bumpup")) +
  theme(legend.position = "none") + 
  facet_wrap(~Next)

subsamp <- sample(seq(1:1000), 500)
next_gen.gg.f.f.all <- next_gen.gg.f.f %>% filter(samp %in% subsamp) %>% 
  group_by(Next, gen, samp) %>% summarize(est = sum(R))
host.names <- strsplit(as.character(next_gen.gg.f.f.all$Next), "_") %>% 
  sapply(., FUN = function(x) c(paste(x, collapse = " "))) %>% 
  sapply(., FUN = function(x) paste(toupper(substring(x, 1, 1)), substring(x, 2), sep = "", collapse = " "))
next_gen.gg.f.f.all$Next <- host.names

ggplot(next_gen.gg.f.f.all, aes(gen, est)) + 
  geom_line(aes(group = interaction(samp, Next)), lwd = 0.2, alpha = 0.5, colour = "grey60") + 
  geom_line(data = next_gen.gg.f.f.s.h, aes(gen, est), lwd = 1) +
  xlab("Generation") +
  ylab("Total Number Infected") +
  xlim(c(0, 5.3)) +
  scale_y_continuous(trans = "pseudo_log", breaks = c(0, 4, 16, 64, 256, 1024)) +
  theme(legend.position = "none") + 
  facet_wrap(~Next)

next_gen.gg.f.f.s2$Next <- factor(next_gen.gg.f.f.s2$Next, levels = AUC_titer.gg.s$Host)
next_gen.gg.f.f.s2$Current <- factor(next_gen.gg.f.f.s2$Current, levels = AUC_titer.gg.s$Host)

next_gen.gg.f.f.s2 <- next_gen.gg.f.f.s2 %>% 
  mutate(gen = mapvalues(
    gen, from = c(1, 3, 5), to = c("Generation 1", "Generation 3", "Generation 5")
  ))

## 13.78 x 5.13
(gg.multigen.host <- ggplot(
  (next_gen.gg.f.f.s2 %>% filter(gen %in% c("Generation 1", "Generation 3", "Generation 5")))
  , aes(Next, Current)) + 
  geom_tile(aes(fill = est), colour = "white") + 
    facet_wrap(~gen) +
    scale_fill_gradient(low = "grey97", high = "#4472C4"
  , name = "New Host Infections 
(Median)") +
    theme(
    axis.text.x     = element_text(angle = 300, hjust = 0, colour = "grey50", size = 16)
  , axis.text.y     = element_text(size = 16)
  , legend.key.size = unit(.55, "cm")
  , legend.text     = element_text(size = 14)
  , legend.title    = element_text(size = 16)
  ) +
  ylab("Current Host Generation") +
  xlab("Next Host Generation")
)

ggsave(filename = "/Users/Morgan/Desktop/host_multigen.pdf", plot = last_plot(), width = 13.78,  height = 5.13, units = c("in"))

### Mosquitoes

ggplot(next_gen.gg.f.f.s.m, aes(gen, est)) + 
  geom_line(aes(colour = Next)) + 
  geom_ribbon(aes(x = gen, ymin = lwr, ymax = upr,fill = Next), alpha = 0.2) +
  xlab("Generation") + ylab("Total Number Infected") +
  xlim(c(0, 5.3)) +
  scale_y_continuous(trans = "pseudo_log") +
# geom_dl(aes(label = Next, colour = Next), method = list(dl.trans(x = x + .3), "last.bumpup")) +
  theme(legend.position = "none") + 
  facet_wrap(~Next)

next_gen.gg.f.f.all.m <- next_gen.gg.f.f.m %>% filter(samp %in% subsamp) %>% 
  group_by(Next, gen, samp) %>% summarize(est = sum(R))
mosq.names <- strsplit(as.character(next_gen.gg.f.f.all.m$Next), "_") %>% 
  sapply(., FUN = function(x) c(paste(x, collapse = " "))) %>% 
  sapply(., FUN = function(x) paste(toupper(substring(x, 1, 1)), substring(x, 2), sep = "", collapse = " "))
next_gen.gg.f.f.all.m$Next <- mosq.names

ggplot(next_gen.gg.f.f.all.m, aes(gen, est)) + 
  geom_line(aes(group = interaction(samp, Next)), lwd = 0.2, alpha = 0.5, colour = "grey60") + 
  geom_line(data = next_gen.gg.f.f.s.m, aes(gen, est), lwd = 1) +
  xlab("Generation") +
  ylab("Total Number Infected") +
  xlim(c(0, 5.3)) +
  scale_y_continuous(trans = "pseudo_log", breaks = c(0, 4, 16, 64, 256, 1024, 4096)) +
  theme(legend.position = "none") + 
  facet_wrap(~Next)

next_gen.gg.f.f.s2.m$Next <- factor(next_gen.gg.f.f.s2.m$Next, levels = mosq_inf_AUC_all_samps_adj_to_com.gg.s$mosq)
next_gen.gg.f.f.s2.m$Current <- factor(next_gen.gg.f.f.s2.m$Current, levels = mosq_inf_AUC_all_samps_adj_to_com.gg.s$mosq)

next_gen.gg.f.f.s2.m <- next_gen.gg.f.f.s2.m %>% 
  mutate(gen = mapvalues(
    gen, from = c(1, 3, 5), to = c("Generation 1", "Generation 3", "Generation 5")
  ))

## 19.97 x 8.00
(gg.multigen.mosq <- ggplot(
  (next_gen.gg.f.f.s2.m %>% filter(gen %in% c("Generation 1", "Generation 3", "Generation 5")))
  , aes(Next, Current)) + 
  geom_tile(aes(fill = est), colour = "white") + 
    facet_wrap(~gen) +
    scale_fill_gradient(low = "grey97", high = "orangered4"
  , name = "New Mosquito Infections 
(Median)") +
    theme(
    axis.text.x     = element_text(angle = 300, hjust = 0, colour = "grey50", size = 20)
  , axis.text.y     = element_text(size = 18)
  , axis.title.y    = element_text(size = 19)
  , strip.text.x    = element_text(size = 18)  
  , legend.key.size = unit(.85, "cm")
  , legend.text     = element_text(size = 18)
  , legend.title    = element_text(size = 16)
  ) +
  ylab("Current Mosquito Generation") +
  xlab("Next Mosquito Generation")
)

ggsave(filename = "/Users/Morgan/Desktop/mosq_multigen.pdf", plot = last_plot(), width = 19.97,  height = 8.00, units = c("in"))

# gridExtra::grid.arrange(gg.multigen.host, gg.multigen.mosq, nrow = 2)

####
## All of the supplemental methods figures are created in the scripts where the statistical models are run
####

######
## A few pieces for the conceptual figure (put together in keynote)
######
mosq.names <- strsplit(mosq_prop$mos_species, "_")
mosq_prop.gg.cf <- mosq_prop

names   <- strsplit(as.character(mosq_prop.gg.cf$mos_species), "_") %>% 
  sapply(., FUN = function(x) x[1]) %>% 
  sapply(., FUN = function(x) paste(toupper(substring(x, 1, 1)), substring(x, 2), sep = "", collapse = " "))
mosq_prop.gg.cf$mos_gen <- names
mosq_prop.gg.cf <- mosq_prop.gg.cf %>% group_by(mos_gen) %>% summarize(sum_prop = sum(prop))
mosq_prop.gg.cf <- data.frame(Culex = 0.390, Aedes = 0.460, Coquillettidia = 0.111, Other = (1 - (0.390 + 0.460 + 0.111)))
mosq_prop.gg.cf <- melt(mosq_prop.gg.cf)
mosq_prop.gg.cf <- mosq_prop.gg.cf %>% mutate(
  ymax = cumsum(value)
)
mosq_prop.gg.cf$ymin      <- c(0, head(mosq_prop.gg.cf$ymax, n=-1))
names(mosq_prop.gg.cf)[1] <- "Mosquito"

ggplot(mosq_prop.gg.cf
  , aes(ymax = ymax, ymin = ymin, xmax = 4, xmin = 3, fill = Mosquito)) +
     geom_rect() +
     scale_fill_manual(values = c("aquamarine4", "purple3", "firebrick3", "deeppink1")) +
     coord_polar(theta="y") + # Try to remove that to understand how the chart is built initially
     xlim(c(2, 4)) + 
  theme_void() 


mosq_blood.gg.cf <- mosq_blood %>% filter(mos_species == "ae_vigilax")
mosq_blood.gg.cf <- data.frame(Bird = 40, Human = 27, Horse = 20, Other = 2 + 12 + 2 + 1 + 33 + 2)

mosq_blood.gg.cf <- melt(mosq_blood.gg.cf)
mosq_blood.gg.cf <- mosq_blood.gg.cf %>% mutate(
  frac = value / sum(value)
, ymax = cumsum(frac)
)
mosq_blood.gg.cf$ymin      <- c(0, head(mosq_blood.gg.cf$ymax, n=-1))
names(mosq_blood.gg.cf)[1] <- "Host"

ggplot(mosq_blood.gg.cf
  , aes(ymax = ymax, ymin = ymin, xmax = 4, xmin = 3, fill = Host)) +
     geom_rect() +
     coord_polar(theta="y") + # Try to remove that to understand how the chart is built initially
     xlim(c(2, 4)) + 
  theme_void()

ggplot(
  (host_sero %>% filter(host_species %in% c("human", "horse", "bird"))) 
, aes(x = host_species, y = (1 - prop_positive))) +
  geom_bar(stat="identity", width=0.5) + 
  xlab("") + ylab("Proportion
Seronegative") + theme(
  axis.text.x = element_text(size = 0)
)
back to top