ggplot2로 만든 플롯의 배경색을 어떻게 변경합니까?


95

기본적으로 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

답변:


120

패널의 배경색을 변경하려면 다음 코드를 사용하십시오.

myplot + theme(panel.background = element_rect(fill = 'green', colour = 'red'))

플롯의 색상을 변경하려면 (패널의 색상은 아님) 다음을 수행 할 수 있습니다.

myplot + theme(plot.background = element_rect(fill = 'green', colour = 'red'))

자세한 테마 세부 정보는 여기를 참조하십시오 . 범례, 축 및 테마에 대한 빠른 참조 시트 .


39
또한 theme_bw, 흰색 배경과 회색 격자 선을 제공합니다. 나는 항상 그것을 사용한다. 인쇄에서 기본 회색 배경보다 훨씬 좋아 보인다.myplot + theme_bw()
ROLO

@ROLO : 좋습니다! 기본적으로 모든 플롯에 이것을 적용하는 방법이 있습니까?
krlmlr

11
기본 B & W ggplots에 대한 스크립트의 시작 부분에이 넣어 : ggplot <- function(...) { ggplot2::ggplot(...) + theme_bw() }
ROLO

1
@ROLO는 특히 Jack의 대답이 그리드 선의 색상을 변경하지 않기 때문에 자체 답변을받을 가치가 있습니다.
naught101

7
optstheme_rectggplot2의 최신 버전에서 사용되지 않습니다. (0.9.3). 따라서 두 번째 명령의 최신 버전은 다음과 같습니다.myplot + theme(plot.background = element_rect(fill='green', colour='red'))
Ram Narasimhan

50

더 이상 사용되지 opts않고 theme_rect사용하려면 다음을 수행하십시오.

myplot + theme(panel.background = element_rect(fill='green', colour='red'))

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

마스킹없이 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 use theme_set(theme_jack())로 되돌리려면 theme_pink use로 돌아가십시오 theme_set(theme_pink).

당신은 대체 할 수 있습니다 theme_graytheme_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()
    )   
}

마지막으로 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) 
        )   
}

1
이것은 매우 도움이됩니다. 감사합니다. 참고로, 인수가에 plot.background전달되어야 함을 발견 했습니다 theme. 다른 인수는 선택 사항입니다.
Racing Tadpole 2014

1

다음은 ggplot2 배경을 흰색으로 만드는 사용자 지정 테마와 출판물 및 포스터에 적합한 기타 변경 사항입니다. + mytheme에 붙이세요. + 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()

맞춤 ggplot 테마

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.