Многоцветные заголовки с ggplot2 для R

Я пытался реализовать многоцветные тексты, как показано здесь :

. многоцветный текст на графике

который ссылался на это:

многоцветный текст в R

Вот что я придумал (с помощью здесь):

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()

Вот результирующий график:

Horsepower versus Miles per Gallon by # Cylinders (mtcars data-set)

Итак, мой вопрос :есть ли более элегантный метод для этого? Я хотел бы иметь возможность использовать ggsave, например, и создание интервала для этого — очень ручной процесс -, не подходящий для сценариев, где мне нужно автоматически создавать сотни графиков такого рода. Я мог бы написать некоторые функции поверх этого, но, может быть, есть лучший способ реализовать методы, используемые с базовой функцией построения графика?

13
задан ROMANIA_engineer 2 December 2017 в 07:47
поделиться