如何更改用 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
185286 次浏览

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

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

要定义自己的自定义主题,基于主题 _ 灰色,但有一些更改和一些额外的包括控制网格线颜色/大小(更多选项可用于发挥与 请访问 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是一个函数。因此,要将主题返回主题 _ jack 使用 theme_set(theme_jack()),而返回主题 _ 粉红色使用 theme_set(theme_pink)

You can replace theme_gray by theme_bw in the definition of theme_jack if you prefer. For your custom theme to resemble theme_bw but with all gridlines (x, y, major and minor) turned off:

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 中绘制 砍刀或其他地图时,一个更激进的主题非常有用,它基于讨论 给你,但为了避免贬值而进行了更新。这里的目的是去除灰色背景,以及任何其他特征,可能会分散地图。

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

下面是一个自定义主题,可以将 ggplot2的背景设置为白色,还有一些其他更改,这些更改对出版物和海报非常有用。加上我的主题。如果要在 + mytheme 后面添加或更改 + theme 选项,它只会替换 + mytheme 中的那些选项。

library(ggplot2)
library(cowplot)
theme_set(theme_cowplot())


mytheme = list(
theme_classic()+
theme(panel.background = element_blank(),strip.background = element_rect(colour=NA, fill=NA),panel.border = element_rect(fill = NA, color = "black"),
legend.title = element_blank(),legend.position="bottom", strip.text = element_text(face="bold", size=9),
axis.text=element_text(face="bold"),axis.title = element_text(face="bold"),plot.title = element_text(face = "bold", hjust = 0.5,size=13))
)


ggplot(data=data.frame(a=c(1,2,3), b=c(2,3,4)), aes(x=a, y=b)) + mytheme + geom_line()

custom ggplot theme