Estou executando um grande conjunto de dados e criando um conjunto padrão de gráficos para um grande número de espécies naquele conjunto de dados. A premissa é bem simples. Para algumas espécies, haverá dados para criar todos os gráficos.
#produce some data
samples <- data.frame(
GROUP = c("dog","dog","dog","cat","cat","cat"),
VAR1 = c(1,3,5,1,3,5),
VAR2 = c(2,4,6,2,4,6),
VAR3 = c(2,4,6,NA,NA,NA),
VAR4 = c(1,2,3,1,2,3),
VAR5 = c(3,2,1,NA,NA,NA)
)
library(ggplot2)
library(cowplot)
#create 3 plots for a species that has data and join the plots with cowplot
plot1.1<-ggplot(samples[samples$GROUP=="dog",],aes(x=VAR1,y=VAR2))+
geom_point()+
theme_bw()
plot2.1<-ggplot(samples[samples$GROUP=="dog",],aes(x=VAR3,y=VAR5))+
geom_point()+
theme_bw()
plot3.1<-ggplot(samples[samples$GROUP=="dog",],aes(x=VAR4,y=VAR3))+
geom_point()+
theme_bw()
group.plot.1<-(plot1.1 + plot2.1 + plot3.1)
group.plot.1
Mas para outros não haverá dados para dar suporte a alguns dos gráficos, então um gráfico vazio é retornado. Isso ainda parece bom e tudo se alinha bem.
plot1.2<-ggplot(samples[samples$GROUP=="cat",],aes(x=VAR1,y=VAR2))+
geom_point()+
theme_bw()
plot2.2<-ggplot(samples[samples$GROUP=="cat",],aes(x=VAR3,y=VAR5))+
geom_point()+
theme_bw()
plot3.2<-ggplot(samples[samples$GROUP=="cat",],aes(x=VAR4,y=VAR1))+
geom_point()+
theme_bw()
group.plot.2<-(plot1.2 + plot2.2 + plot3.2)
group.plot.2
Para os gráficos sem dados, gostaria de adicionar um rótulo 'Sem Dados'. Eu faço isso usando ggdraw, mas quando agrupo os gráficos, o gráfico vazio com o rótulo não se alinha mais com os outros gráficos.
#adding 'No Data' label to empty plot
plot2.2b <- ggdraw(plot2.2)+
draw_label("No Data", color = "#C0A0A0", size = 10)
group.plot.2b<-(plot1.2 + plot2.2b + plot3.2)
group.plot.2b
Como faço para que o gráfico vazio se alinhe com os outros novamente? Parece que deveria haver uma solução fácil para isso ou uma maneira melhor de adicionar o rótulo, mas não tive sucesso com outras abordagens. Obrigado pela ajuda.
Você precisa criar o gráfico vazio com
ggdraw()
? Você pode criar o mesmo gráfico vazio com{ggplot}
, e ele funcionará{cowplot}
como esperado: