如何更改使用ggplot2制作的图的背景颜色

默认情况下,ggplot2生成灰色背景的图。 如何更改剧情背景的颜色?

例如,一个由以下代码产生的情节:

library(ggplot2) myplot<-ggplot(data=data.frame(a=c(1,2,3), b=c(2,3,4)), aes(x=a, y=b)) + geom_line() myplot 

要更改面板的背景色,请使用以下代码:

 myplot + theme(panel.background = element_rect(fill = 'green', colour = 'red')) 

要更改图的颜色(但不是面板的颜色),可以这样做:

 myplot + theme(plot.background = element_rect(fill = 'green', colour = 'red')) 

请参阅这里了解更多主题的详细信息传奇,斧头和主题的快速参考表 。

为避免弃用optstheme_rect使用:

 myplot + theme(panel.background = element_rect(fill='green', colour='red')) 

要定义自己的自定义主题,基于theme_gray,但有一些您的更改和一些额外的附加function,包括控制网格线颜色/大小( ggplot2.org提供更多选项):

 theme_jack <- function (base_size = 12, base_family = "") { theme_gray(base_size = base_size, base_family = base_family) %+replace% theme( axis.text = element_text(colour = "white"), axis.title.x = element_text(colour = "pink", size=rel(3)), axis.title.y = element_text(colour = "blue", angle=45), panel.background = element_rect(fill="green"), panel.grid.minor.y = element_line(size=3), panel.grid.major = element_line(colour = "orange"), plot.background = element_rect(fill="red") ) } 

在将来调用ggplot时,将自定义主题设置为默认值,而不进行屏蔽:

 theme_set(theme_jack()) 

如果你想改变当前设置的主题元素:

 theme_update(plot.background = element_rect(fill="pink"), axis.title.x = element_text(colour = "red")) 

要将当前的默认主题存储为对象:

 theme_pink <- theme_get() 

请注意, theme_pink是一个列表,而theme_jack是一个函数。 所以要返回主题theme_jack使用theme_set(theme_jack())而返回到theme_pink使用theme_set(theme_pink)

如果您愿意,可以在theme_bw的定义中用theme_bwreplacetheme_gray 。 对于您的自定义主题类似于theme_bwtheme_bw所有网格线(x,y,主要和次要):

 theme_nogrid <- function (base_size = 12, base_family = "") { theme_bw(base_size = base_size, base_family = base_family) %+replace% theme( panel.grid = element_blank() ) } 

最后一个更为激进的主题,在绘制ggplot中的等值线或其他地图时很有用,基于这里的讨论,但为了避免折旧而更新。 这里的目的是消除灰色的背景,以及可能会从地图中分散注意力的其他function。

 theme_map <- function (base_size = 12, base_family = "") { theme_gray(base_size = base_size, base_family = base_family) %+replace% theme( axis.line=element_blank(), axis.text.x=element_blank(), axis.text.y=element_blank(), axis.ticks=element_blank(), axis.ticks.length=unit(0.3, "lines"), axis.ticks.margin=unit(0.5, "lines"), axis.title.x=element_blank(), axis.title.y=element_blank(), legend.background=element_rect(fill="white", colour=NA), legend.key=element_rect(colour="white"), legend.key.size=unit(1.2, "lines"), legend.position="right", legend.text=element_text(size=rel(0.8)), legend.title=element_text(size=rel(0.8), face="bold", hjust=0), panel.background=element_blank(), panel.border=element_blank(), panel.grid.major=element_blank(), panel.grid.minor=element_blank(), panel.margin=unit(0, "lines"), plot.background=element_blank(), plot.margin=unit(c(1, 1, 0.5, 0.5), "lines"), plot.title=element_text(size=rel(1.2)), strip.background=element_rect(fill="grey90", colour="grey50"), strip.text.x=element_text(size=rel(0.8)), strip.text.y=element_text(size=rel(0.8), angle=-90) ) }