facet_wrap 레이블을 완전히 제거하십시오.


84

청중의 경우 레이블이 관련이 없기 때문에 일종의 스파크 라인 효과 를 만들기 위해 패싯의 레이블을 완전히 제거하고 싶습니다 .

library(MASS)
library(ggplot2)
qplot(week,y,data=bacteria,group=ID, geom=c('point','line'), xlab='', ylab='') + 
     facet_wrap(~ID) + 
     theme(strip.text.x = element_text(size=0))

그렇다면 "스파크 라인"을위한 더 많은 공간을 허용하기 위해 (지금은 비어있는) strip.background를 완전히 제거 할 수 있습니까?

아니면 이와 같은 많은 이진 값 시계열에 대해이 " 스파크 라인 "효과 를 얻는 더 좋은 방법 이 있습니까?

답변:


132

ggplot v2.1.0 이상의 경우을 사용 element_blank()하여 원하지 않는 요소를 제거하십시오.

library(MASS) # To get the data
library(ggplot2)

qplot(
  week,
  y,
  data = bacteria,
  group = ID,
  geom = c('point', 'line'),
  xlab = '',
  ylab = ''
) + 
facet_wrap(~ ID) + 
theme(
  strip.background = element_blank(),
  strip.text.x = element_blank()
)

이 경우 제거하려는 요소는라고 strip합니다.

패널 제목이없는 ggplot2 그림


ggplot grob 레이아웃을 사용하는 대안

이전 버전 ggplot(v2.1.0 이전)에서는 스트립 텍스트가 gtable 레이아웃의 행을 차지합니다.

element_blank 텍스트와 배경을 제거하지만 행이 차지한 공간은 제거하지 않습니다.

이 코드는 레이아웃에서 해당 행을 제거합니다.

library(ggplot2)
library(grid)

p <- qplot(
  week,
  y,
  data = bacteria,
  group = ID,
  geom = c('point', 'line'),
  xlab = '',
  ylab = ''
) + 
facet_wrap(~ ID)

# Get the ggplot grob
gt <- ggplotGrob(p)

# Locate the tops of the plot panels
panels <- grep("panel", gt$layout$name)
top <- unique(gt$layout$t[panels])

# Remove the rows immediately above the plot panel
gt = gt[-(top-1), ]

# Draw it
grid.newpage()
grid.draw(gt)

다른 사람은 Error in apply(strip_mat, 1, max_height) : dim(X) must have a positive length?
PatrickT

25

ggplot2 버전 1을 사용하고 있으며 필요한 명령이 변경되었습니다. 대신에

ggplot() ... + 
opts(strip.background = theme_blank(), strip.text.x = theme_blank())

당신은 지금 사용

ggplot() ... + 
theme(strip.background = element_blank(), strip.text = element_blank())

자세한 내용은 http://docs.ggplot2.org/current/theme.html을 참조 하십시오.


7

Sandy의 업데이트 된 답변은 좋아 보이지만 ggplot 업데이트로 인해 쓸모 없게 될 수 있습니까? 다음 코드 (Sandy의 원래 답변의 단순화 된 버전)에서 알 수있는 것은 추가 공간없이 Sean의 원래 그래프를 재현합니다.

library(ggplot2)
library(grid)
qplot(week,y,data=bacteria,group=ID, geom=c('point','line'), xlab='', ylab='') + 
 facet_wrap(~ID) + 
 theme(strip.text.x = element_blank())

ggplot 2.0.0을 사용하고 있습니다.


4

내가 알 수 있듯이 Sandy의 대답은 정확하지만 패싯이없는 플롯의 너비와 패싯이 제거 된 플롯의 너비에 작은 차이가있는 것 같다는 점을 언급 할 가치가 있다고 생각합니다.

찾고 있지 않으면 명확하지 않지만 Wickham이 책에서 권장하는 뷰포트 레이아웃을 사용하여 플롯을 쌓으면 그 차이가 분명해집니다.


1
예를 들어 이것에 대해 자세히 설명해 주시겠습니까?
mnel

시작 합니다 . 링크를 사용 해보세요 . 나는 ggplot의 '다이아몬드'데이터 셋을 사용하므로 누구나 사용할 수 있습니다. 패싯 그래프의 오른쪽 여백은 패싯이없는 그래프보다 약간 좁습니다.
CW Dillon

facet_wrap (OP의 질문에서 패널이 위에 있음)에서 facet_grid (측면에 패널 테스트 포함)로 전환되기 때문에 이것은 좋은 비교가 아닙니다. 핵심 문제는 패널 텍스트가 압축 할 수 없다는 것입니다. OP 질문에서 qplot의 창 크기를 조정하면 패널 텍스트가 유발할 수있는 문제를 쉽게 확인할 수 있습니다. x 축에는 종종 이전에 알려진 값이 있고 y 축에는 이전에 알려지지 않은 값이있는 경우가 많으므로 이는 특히 불행한 일입니다.
MattBagg 2012
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.