默认情况下,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'))
有关更多主题详情,请参阅此处Quick reference sheet for legends, axes and themes .
为避免弃用 opts 和 theme_rect ,请使用:
opts
theme_rect
myplot + theme(panel.background = element_rect(fill='green', colour='red'))
要定义您自己的自定义主题,请基于theme_gray,但要进行一些更改以及一些额外的内容,包括控制网格线的颜色/大小(有更多选项可用于at 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_pink
theme_jack
theme_set(theme_pink)
如果您愿意,可以在 theme_jack 的定义中将 theme_gray 替换为 theme_bw . 为使您的自定义主题类似于 theme_bw ,但所有网格线(x,y,主要和次要)都关闭:
theme_gray
theme_bw
theme_nogrid <- function (base_size = 12, base_family = "") { theme_bw(base_size = base_size, base_family = base_family) %+replace% theme( panel.grid = element_blank() ) }
最后一个更激进的主题在绘制choropleths或ggplot中的其他 Map 时有用,基于讨论here但更新以避免弃用 . 这里的目的是删除灰色背景,以及可能分散 Map 的任何其他功能 .
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) ) }
2 回答
要更改面板的背景颜色,请使用以下代码:
要更改绘图的颜色(但不更改面板的颜色),您可以执行以下操作:
有关更多主题详情,请参阅此处Quick reference sheet for legends, axes and themes .
为避免弃用
opts
和theme_rect
,请使用:要定义您自己的自定义主题,请基于theme_gray,但要进行一些更改以及一些额外的内容,包括控制网格线的颜色/大小(有更多选项可用于at ggplot2.org):
要在将来调用ggplot时使自定义主题成为默认主题,而不进行屏蔽:
如果要更改当前设置主题的元素:
要将当前默认主题存储为对象:
请注意
theme_pink
是一个列表,而theme_jack
是一个函数 . 所以要将主题返回到theme_jack使用theme_set(theme_jack())
而要返回theme_pink使用theme_set(theme_pink)
.如果您愿意,可以在
theme_jack
的定义中将theme_gray
替换为theme_bw
. 为使您的自定义主题类似于theme_bw
,但所有网格线(x,y,主要和次要)都关闭:最后一个更激进的主题在绘制choropleths或ggplot中的其他 Map 时有用,基于讨论here但更新以避免弃用 . 这里的目的是删除灰色背景,以及可能分散 Map 的任何其他功能 .