축, 범례 등이없는 ggplot2 플롯


139

바이오 컨덕터의 헥스 빈 (내가 할 수있는)을 사용하여 (png) 표시 영역 전체를 채우는 플롯 (축, 레이블, 배경, 너트 없음)을 생성하고 싶습니다.


1
16 진 플롯을 만들어 이미지 편집기에서 자르는 것이 쉽지 않습니까?
joran

3
시도theme_void()
브라이언 D

답변:


182

체이스의 답변에 대한 나의 의견에 따르면, 다음을 사용하여 많은 것들을 제거 할 수 있습니다 element_blank.

dat <- data.frame(x=runif(10),y=runif(10))

p <- ggplot(dat, aes(x=x, y=y)) + 
        geom_point() +
        scale_x_continuous(expand=c(0,0)) + 
        scale_y_continuous(expand=c(0,0))   

p + theme(axis.line=element_blank(),axis.text.x=element_blank(),
          axis.text.y=element_blank(),axis.ticks=element_blank(),
          axis.title.x=element_blank(),
          axis.title.y=element_blank(),legend.position="none",
          panel.background=element_blank(),panel.border=element_blank(),panel.grid.major=element_blank(),
          panel.grid.minor=element_blank(),plot.background=element_blank())

이것을 저장할 때 결과 .png의 가장자리 주위에 여전히 작은 여백이있는 것처럼 보입니다. 다른 사람이 해당 구성 요소를 제거하는 방법을 알고있을 것입니다.

(역사 주 : 이후 ggplot2의 버전 0.9.2, opts사용되지 않습니다 대신 사용합니다. theme()그리고 교체 theme_blank()와 함께 element_blank().)



전달의 코멘트 : 경우에, theme(axis.ticks=element_blank())만큼 잘 작동하지 않습니다 theme(axis.ticks.x=element_blank()), 일시적인 버그 곳 (그때 내가 무시하려고, 내 자신의 테마 설정이 있습니다 만 axis.ticks.x하고 axis.ticks.y작업을한다.)
PatrickT

106

다시 : 테마 등으로 옵트 변경 (게으른 사람들을 위해) :

theme(axis.line=element_blank(),
      axis.text.x=element_blank(),
      axis.text.y=element_blank(),
      axis.ticks=element_blank(),
      axis.title.x=element_blank(),
      axis.title.y=element_blank(),
      legend.position="none",
      panel.background=element_blank(),
      panel.border=element_blank(),
      panel.grid.major=element_blank(),
      panel.grid.minor=element_blank(),
      plot.background=element_blank())

59

현재 답변이 불완전하거나 비효율적입니다. 결과를 달성하는 가장 짧은 방법은 다음과 같습니다 theme_void().

data(diamonds) # Data example
ggplot(data = diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) +
      theme_void() + theme(legend.position="none")

결과는 다음과 같습니다.

여기에 이미지 설명을 입력하십시오


그냥 제거에 관심이 있다면 레이블 , labs(x="", y="")트릭을 수행합니다

ggplot(data = diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) + 
      labs(x="", y="")

ggplot(data = diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) + theme_void() + theme(legend.position="none", panel.background = element_rect(fill="grey80"), plot.background = element_rect(fill="red"))100 % 무효가 아님을 제안
baptiste

labs (x = "", y = "")는 축만 제거하는 것이 아니라 레이블 만 나타납니다.
miratrix

@miratrix 죄송합니다, 실수입니다. 업데이트되었습니다.
luchonacho

5
@luchonacho labs(x="",y="")실제로 제목이 있기 때문에 축 제목의 공백을 사용하면 부호가 없습니다. 축 제목과 공간을 제거하려면 사용하는 것이 좋습니다.+ theme(axis.title = element_blank())
Didzis Elferts

6
labs(x = NULL)또는 xlab(NULL)다른 방법입니다.
PatrickT

42
'opts' is deprecated.

ggplot2 >= 0.9.2사용

p + theme(legend.position = "none") 

6
아직 편집 권한이 없다는 것을 알고 있지만 업데이트 해야하는 다른 ggplot2 답변을 발견하면 re : opts () 수정을 제안하십시오. 알림을 받고 직접 통합 할 수 있습니다.
joran

3
xy <- data.frame(x=1:10, y=10:1)
plot <- ggplot(data = xy)+geom_point(aes(x = x, y = y))
plot
panel = grid.get("panel-3-3")

grid.newpage()
pushViewport(viewport(w=1, h=1, name="layout"))
pushViewport(viewport(w=1, h=1, name="panel-3-3"))
upViewport(1)
upViewport(1)
grid.draw(panel)

Error in UseMethod("grid.draw") : no applicable method for 'grid.draw' applied to an object of class "NULL"
Roman Luštrik 2016 년

grid.ls () 뷰포트 및
grob

내가 패널 이름을 사용하고 있음을 ggplot의 다른 버전에서 다른 것 같습니다
amaurel

xy <-data.frame (x = 1 : 10, y = 10 : 1) 플롯 <-ggplot (data = xy) + geom_point (aes (x = x, y = y)) 플롯 패널 = grid.get ( " panel-3-4 ") grid.newpage () pushViewport (viewport (w = 1, h = 1, name ="layout ")) pushViewport (viewport (w = 1, h = 1, name ="panel-3- 4 ")) upViewport (1) upViewport (1) grid.draw (panel)
amaurel

-1

이것이 당신이 원하는 것을합니까?

 p <- ggplot(myData, aes(foo, bar)) + geom_whateverGeomYouWant(more = options) +
 p + scale_x_continuous(expand=c(0,0)) + 
 scale_y_continuous(expand=c(0,0)) +
 opts(legend.position = "none")

범례를 제거하지만 x 및 y 축과 배경 그리드는 여전히 있습니다.
user1320487
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.