Títulos multicoloridos com ggplot2 para R
Eu estava tentando implementar textos multicoloridos como mostrado aqui:
texto multicolorido no gráfico
que referencia isto:
Foi isso que eu criei (com a ajuda deAqui):
require(ggplot2)
require(grid)
png(file="multicolortitle.png",width=800,height=500)
qplot(x = hp,y = mpg,data = mtcars,color=factor(mtcars$cyl),size=2) +
scale_colour_manual(values = c("red3","green3","blue3")) +
theme_bw() +
opts(title = " \n ") +
opts(legend.position = "none")
spacing <- 20
grid.text(0.5, unit(1,"npc") - unit(1,"line"),
label=paste("4 cylinder,",paste(rep(" ",spacing*2), collapse='')),
gp=gpar(col="red3", fontsize=16,fontface="bold"))
grid.text(0.5, unit(1,"npc") - unit(1,"line"),
label=paste(paste(rep(" ",spacing), collapse=''),"6 cylinder,",
paste(rep(" ",spacing), collapse='')),
gp=gpar(col="green3", fontsize=16,fontface="bold"))
grid.text(0.5, unit(1,"npc") - unit(1,"line"),
label=paste(paste(rep(" ",spacing*2), collapse=''),"8 cylinder"),
gp=gpar(col="blue3", fontsize=16,fontface="bold"))
grid.text(0.5, unit(1,"npc") - unit(2,"line"),
label=paste(paste(rep(" ",spacing*0), collapse=''),
"- Horsepower versus Miles per Gallon"),
gp=gpar(col="black", fontsize=16,fontface="bold"))
dev.off()
Aqui está o gráfico resultante:
Então, minha pergunta: existe um método mais elegante para usar isso? Eu gostaria de poder usarggsave
por exemplo, e criar o espaçamento para isso é um processo altamente manual - não é adequado para cenários em que preciso fazer centenas de parcelas dessa natureza automaticamente. Eu pude ver escrevendo algumas funções em cima disso, mas talvez haja uma maneira melhor de implementar os métodos utilizados com a função de plotagem de base?