2014-09-03 2 views
4

여기에 ggplot2 패키지와 facet_wrap 함수와 같은 플롯을 만들었습니다. 더 쉽게 읽을 수 있도록 일부 X 축을 억제하려고합니다. 예를 들어 여기에 상자 D, F, H 및 J에 x 축 눈금이 표시되면 더 읽기 쉽습니다.ggplot2에서 facet_wrap의 축척을 억제

어떻게 할 수 있습니까?

미리 감사드립니다.

plot... http://docs.ggplot2.org/0.9.3.1/facet_wrap-8.png

편집 : 당신은 하나의 행의 플롯을 표시하기로 결정 이유를 재현 코드

library(ggplot2) 
d <- ggplot(diamonds, aes(carat, price, fill = ..density..)) + 
    xlim(0, 2) + stat_binhex(na.rm = TRUE) + theme(aspect.ratio = 1) 
d + facet_wrap(~ color, nrow = 1) 
+0

귀하의 질문은 매우 유사, 그렇지 않으면 동일로 http://stackoverflow.com/questions/5380417/ -가 - 조작 방법 - ggplot-scale-breaks-and-label – Andrie

+0

귀하의 질문은 저울 수정에 관한 것이었지만 여기서는 저울을 수정하고 싶지 않습니다. 방법). 나는 그것이 모든 패싯 (그러나 패싯 D, F, H, J 등)에 나타나지 않도록하고 싶습니다. – Pop

+0

재미있는 질문이지만, 항상 재현 가능한 코드를 만드는 것이 좋습니다. 복사/붙여 넣기/실험이 편리하도록 추가해주세요.(특히 여러분의 데이터가'diamonds'처럼 보이기 때문에) – tonytonov

답변

6

grid/grob 수준에서 작업하고 싶다면 확실히 할 수 있습니다.

첫째, 우리는 그 다음 우리는 그래서 우리는 낮은 레벨의 객체를 조작/사용할 수 있습니다 gtable을로드하여 측면 음모

my_plot <- d + facet_wrap(~ color, nrow = 1) 

와 ggplot 객체를 할당합니다.

library(gtable) 

## Loading required package: grid 

지금, 우리는 TableGrob로 (긴 틱 출력에 대한 사과를하지만, 나는 그것이면 플롯의 기본 구조를 보여 도움이 생각)을 ggplot 객체를 추출 :

plot_tab <- ggplotGrob(my_plot) 
print(plot_tab) 

## TableGrob (8 x 25) "layout": 33 grobs 
##  z   cells  name         grob 
## 1 0 (1- 8, 1-25) background   rect[plot.background.rect.263] 
## 2 1 (4- 4, 4- 4) panel-1     gTree[panel-1.gTree.53] 
## 3 2 (4- 4, 7- 7) panel-2     gTree[panel-2.gTree.68] 
## 4 3 (4- 4,10-10) panel-3     gTree[panel-3.gTree.83] 
## 5 4 (4- 4,13-13) panel-4     gTree[panel-4.gTree.98] 
## 6 5 (4- 4,16-16) panel-5    gTree[panel-5.gTree.113] 
## 7 6 (4- 4,19-19) panel-6    gTree[panel-6.gTree.128] 
## 8 7 (4- 4,22-22) panel-7    gTree[panel-7.gTree.143] 
## 9 8 (3- 3, 4- 4) strip_t-1 absoluteGrob[strip.absoluteGrob.211] 
## 10 9 (3- 3, 7- 7) strip_t-2 absoluteGrob[strip.absoluteGrob.217] 
## 11 10 (3- 3,10-10) strip_t-3 absoluteGrob[strip.absoluteGrob.223] 
## 12 11 (3- 3,13-13) strip_t-4 absoluteGrob[strip.absoluteGrob.229] 
## 13 12 (3- 3,16-16) strip_t-5 absoluteGrob[strip.absoluteGrob.235] 
## 14 13 (3- 3,19-19) strip_t-6 absoluteGrob[strip.absoluteGrob.241] 
## 15 14 (3- 3,22-22) strip_t-7 absoluteGrob[strip.absoluteGrob.247] 
## 16 15 (4- 4, 3- 3) axis_l-1 absoluteGrob[axis-l-1.absoluteGrob.199] 
## 17 16 (4- 4, 6- 6) axis_l-2   zeroGrob[axis-l-2.zeroGrob.200] 
## 18 17 (4- 4, 9- 9) axis_l-3   zeroGrob[axis-l-3.zeroGrob.201] 
## 19 18 (4- 4,12-12) axis_l-4   zeroGrob[axis-l-4.zeroGrob.202] 
## 20 19 (4- 4,15-15) axis_l-5   zeroGrob[axis-l-5.zeroGrob.203] 
## 21 20 (4- 4,18-18) axis_l-6   zeroGrob[axis-l-6.zeroGrob.204] 
## 22 21 (4- 4,21-21) axis_l-7   zeroGrob[axis-l-7.zeroGrob.205] 
## 23 22 (5- 5, 4- 4) axis_b-1 absoluteGrob[axis-b-1.absoluteGrob.150] 
## 24 23 (5- 5, 7- 7) axis_b-2 absoluteGrob[axis-b-2.absoluteGrob.157] 
## 25 24 (5- 5,10-10) axis_b-3 absoluteGrob[axis-b-3.absoluteGrob.164] 
## 26 25 (5- 5,13-13) axis_b-4 absoluteGrob[axis-b-4.absoluteGrob.171] 
## 27 26 (5- 5,16-16) axis_b-5 absoluteGrob[axis-b-5.absoluteGrob.178] 
## 28 27 (5- 5,19-19) axis_b-6 absoluteGrob[axis-b-6.absoluteGrob.185] 
## 29 28 (5- 5,22-22) axis_b-7 absoluteGrob[axis-b-7.absoluteGrob.192] 
## 30 29 (7- 7, 4-22)  xlab    text[axis.title.x.text.249] 
## 31 30 (4- 4, 2- 2)  ylab    text[axis.title.y.text.251] 
## 32 31 (4- 4,24-24) guide-box      gtable[guide-box] 
## 33 32 (2- 2, 4-22)  title    text[plot.title.text.261] 

내 무효화를 -look-ahead-regex-fu는 오늘 아침에 작동하지 않습니다. 이렇게 짧은 정규 표현식을 가진 사람이 편집하거나 주석을 달 수 있다면 정말 멋지 겠지요. 기본적으로 원하지 않는 x 축 요소를 필터링합니다 (사라진 것을 로컬에서 다시 인쇄하여).

plot_filtered <- gtable_filter(plot_tab, 
        "(background|panel|strip_t|axis_l|xlab|ylab|guide-box|title|axis_b-[1357])", 
        trim=FALSE) 

그리고 지금, 우리는 실제 플로팅을 수행

grid.newpage() 
grid.draw(plot_filtered) 

enter image description here

+1

네가 부정적인 앞선 regex-fu가 ['gtable_filter'] (https://github.com/hadley/gtable/blob/)와 함께 작동한다고 생각하지 않는다. master/R/filter.r) b/c'perl = TRUE'를 기본'grepl() '표현식에 넘길 수 없기 때문에'(?! axis_b)'와 같은 표현식을 사용할 수 없습니다. 'negate = TRUE'를 전달하여 전체 정규식을 무효로하는 것도 불가능합니다. –

0

더 큰 이유가 있나요?

library(ggplot2) 
d <- ggplot(diamonds, aes(carat, price, fill = ..density..)) + 
xlim(0, 2) + stat_binhex(na.rm = TRUE) + 
theme(aspect.ratio = 1,axis.text.x = element_text(angle = 90, hjust = 0,vjust=.5)) 
d + facet_wrap(~ color, nrow = 2) 

나는 그 질문에 대답하지 않을 수 있습니다 알고 그래서 결과는 같을 것이다 변화 theme(aspect.ratio=1)

theme(aspect.ratio = 1,axis.text.x = element_text(angle = 90, hjust = 0,vjust=.5))에 : 그냥 매개 변수 nrow = facet_wrap()의 2를 설정하고 x 축 텍스트를 설정 excactly,하지만 내 이해를 위해 줄거리가 덜 오버로드되도록 앞으로 찾고있을 줄 알았는데.

이 기능이 유용합니까?