2017-02-20 8 views
1

Я хочу, чтобы изменить фон ggtitle моего ggplot на лес, сохраняя текст белым. Цвет не должен применяться ко всему графику, но только заголовок. Это то, что я до сих пор:Настроить цвет фона ggtitle

p <- ggplot(...) 
p <- p + ggtitle("Market Updates") + labs(x = "Date", y = "High") 
p <- p + theme(plot.title = element.text(hjust = 0.5, size = 20, 
       color = "#FFFFFF")) 

Я хотел бы сделать его выглядеть следующим образом:

enter image description here

+2

Это будет, вероятно, будет проще всего сделать один фасет сюжет, и изменение фон полосы. – Axeman

ответ

1

Обновление от комментариев.

Существует несколько подходов для этого; используя facet_, как предлагает Axeman, создать полосу над графиком (проще изменить формат полосы, чем полоса заголовка), или вы можете создать полосу заголовка вручную, а затем приклеить ее к сюжету.

Пример

library(ggplot2) 
library(gridExtra) 
library(grid) 

# Create dummy variable to facet on: this name will appear in the strip 
mtcars$tempvar <- "Market Updates" 

# Basic plot 
# Manually added legend to match your expected result 
p <- ggplot(mtcars, aes(mpg, wt)) + 
     geom_line(aes(colour="Com")) + 
     scale_colour_manual(name="", values=c(Com = "#228b22")) + 
     labs(x = "Date", y = "High") 

Использование facet_: это только добавляет цветную полосу через панель сюжета, хотя название по центру.

p + facet_grid(. ~ tempvar) + 
     theme(strip.background = element_rect(fill="#228b22"), 
       strip.text = element_text(size=15, colour="white")) 

Который производит

enter image description here

Использование grid функции: это добавляет цветную полосу через панель сюжета, но название сосредоточено на графическом окне. (Вы могли бы получить немного больше контроля с позиционированием, добавив его к сюжету gtable)

my_g <- grobTree(rectGrob(gp=gpar(fill="#228b22")), 
       textGrob("Market Updates", x=0.5, hjust=0.5, 
              gp=gpar(col="white", cex=1.5))) 

grid.arrange(my_g, p, heights=c(1,9)) 

который производит

enter image description here