首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何更改使用ggplot2制作的绘图的背景色

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

Stack Overflow用户
提问于 2011-07-19 00:49:57
回答 3查看 163.3K关注 0票数 111

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

例如,由以下代码生成的绘图:

代码语言:javascript
运行
复制
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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-19 00:52:41

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

代码语言:javascript
运行
复制
myplot + theme(panel.background = element_rect(fill = 'green', colour = 'red'))

要更改绘图的颜色(但不更改面板的颜色),可以执行以下操作:

代码语言:javascript
运行
复制
myplot + theme(plot.background = element_rect(fill = 'green', colour = 'red'))

有关更多主题详细信息,请参阅此处Quick reference sheet for legends, axes and themes

票数 143
EN

Stack Overflow用户

发布于 2013-01-05 10:52:49

要避免使用过时的optstheme_rect,请执行以下操作:

代码语言:javascript
运行
复制
myplot + theme(panel.background = element_rect(fill='green', colour='red'))

要定义您自己的自定义主题,基于theme_gray,但带有一些更改和一些附加功能,包括对网格线颜色/大小的控制(可以使用at ggplot2.org的更多选项):

代码语言:javascript
运行
复制
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时的默认主题,而不进行屏蔽:

代码语言:javascript
运行
复制
theme_set(theme_jack())

如果要更改当前设置主题的元素,请执行以下操作:

代码语言:javascript
运行
复制
theme_update(plot.background = element_rect(fill="pink"), axis.title.x = element_text(colour = "red"))

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

代码语言:javascript
运行
复制
theme_pink <- theme_get()

请注意,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、主要和次要):

代码语言:javascript
运行
复制
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中绘制choropleths或其他地图时很有用,它基于讨论here,但进行了更新以避免弃用。这里的目的是删除灰色背景,以及可能会分散地图注意力的任何其他要素。

代码语言:javascript
运行
复制
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) 
        )   
}
票数 52
EN

Stack Overflow用户

发布于 2020-01-14 03:54:05

这里有一个自定义的主题,使ggplot2的背景变白,以及其他一些对出版物和海报都有好处的改变。只需添加+我的主题即可。如果你想在+mytheme之后添加或更改选项,它只会替换那些来自+mytheme的选项。

代码语言:javascript
运行
复制
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()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6736378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档