如何更改使用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'))
请参阅这里了解更多主题的详细信息传奇,斧头和主题的快速参考表 。
为避免弃用opts
和theme_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_bw
replacetheme_gray
。 对于您的自定义主题类似于theme_bw
但theme_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) ) }