默认情况下,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
Run Code Online (Sandbox Code Playgroud)
Jac*_*nds 110
要更改面板的背景颜色,请使用以下代码:
myplot + theme(panel.background = element_rect(fill = 'green', colour = 'red'))
Run Code Online (Sandbox Code Playgroud)
要更改绘图的颜色(但不更改面板的颜色),您可以执行以下操作:
myplot + theme(plot.background = element_rect(fill = 'green', colour = 'red'))
Run Code Online (Sandbox Code Playgroud)
有关更多主题详情,请参阅此处有关图例,轴和主题的快速参考表.
Sil*_*ish 50
为避免弃用opts和theme_rect使用:
myplot + theme(panel.background = element_rect(fill='green', colour='red'))
Run Code Online (Sandbox Code Playgroud)
要定义自己的自定义主题,请基于theme_gray,但要进行一些更改,并添加一些额外内容,包括控制网格线颜色/大小(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")
)
}
Run Code Online (Sandbox Code Playgroud)
要在将来调用ggplot时使自定义主题成为默认主题,而不进行屏蔽:
theme_set(theme_jack())
Run Code Online (Sandbox Code Playgroud)
如果要更改当前设置主题的元素:
theme_update(plot.background = element_rect(fill="pink"), axis.title.x = element_text(colour = "red"))
Run Code Online (Sandbox Code Playgroud)
要将当前默认主题存储为对象:
theme_pink <- theme_get()
Run Code Online (Sandbox Code Playgroud)
请注意,这theme_pink是一个列表,而是theme_jack一个函数.所以要返回主题到theme_jack使用theme_set(theme_jack())而返回到theme_pink使用theme_set(theme_pink).
您可以替换theme_gray通过theme_bw的定义中,theme_jack如果你喜欢.为了使您的自定义主题类似,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()
)
}
Run Code Online (Sandbox Code Playgroud)
最后一个更激进的主题在ggplot中绘制choropleths或其他地图时很有用,基于此处的讨论但更新以避免弃用.这里的目的是删除灰色背景,以及可能分散地图的任何其他功能.
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)
)
}
Run Code Online (Sandbox Code Playgroud)