2012-09-24 12 views
8

के लिए एकाधिक किंवदंतियों geom_raster के साथ facet_grid या facet_wrap का उपयोग करने की कोशिश कर रहा हूं। हालांकि, प्रत्येक पैनल में, z सौंदर्यशास्त्र एक अलग पैमाने पर है। उदाहरण के लिए,एक ही सौंदर्यशास्त्र

##Data at end of question 
ggplot(dd, aes(x,y)) + 
    geom_raster(aes(fill=z)) + 
    facet_grid(type ~ var) 

enter image description here देता है।

हालांकि, चूंकि सी और डी के औसत मूल्य क्रमशः 0 और 100 हैं, इसलिए हम बहुत सारे संकल्प खो देते हैं। आप भी आजमा सकते:

##Change C to D to get other panel 
ggplot(subset(dd, var=="C"), aes(x,y))+ 
    geom_raster(aes(fill=z)) + 
    facet_grid(type ~ var) + 
    theme(legend.position="bottom") 

जो

enter image description here

और

enter image description here

देता है, लेकिन अब मैं दो y स्ट्रिप्स की है।

प्रश्न

  1. मैं fill सौंदर्य के लिए दो किंवदंतियों देने के लिए पहले साजिश को बदल सकते हैं?
  2. या, यदि मैं दो अलग-अलग ग्राफ करता हूं, तो क्या मैं प्लॉट्स में से एक पर वाई स्ट्रिप को हटा सकता हूं ताकि मुझे उन्हें एक साथ दबाया जा सके - थीम के साथ गड़बड़ कर, यह सुझाव देता है कि यह संभव नहीं है।

डाटा

डाटा रेखांकन पुन: पेश करने

dd = expand.grid(x=1:10, y=1:10) 
dd = data.frame(dd, type=rep(LETTERS[1:2], each=100), 
      var =rep(c("C", "D"), each=200)) 
dd$z = rnorm(400, rep(c(0, 100), each=200)) 

उत्तर

7

क्या इस बारे में:

enter image description here

library(gridExtra) 
p1 <- ggplot(subset(dd, var=="C"), aes(x,y))+ 
    geom_raster(aes(fill=z)) + facet_grid(type ~ var) + 
    theme(legend.position="bottom", plot.margin = unit(c(1,-1,1,0.2), "line")) 
p2 <- ggplot(subset(dd, var=="D"), aes(x,y))+ 
    geom_raster(aes(fill=z)) + facet_grid(type ~ var) + 
    theme(legend.position="bottom", plot.margin = unit(c(1,1,1,-0.8), "line"), 
     axis.text.y = element_blank(), axis.ticks.y = element_blank()) + ylab("") 
grid.arrange(arrangeGrob(p1, p2, nrow = 1)) 
भी

आप हो सकता है plot.margin के साथ खेलना चाहते हैं। और ऐसा लगता है कि आपके पहले प्रश्न का नकारात्मक जवाब here पाया जा सकता है।

+0

धन्यवाद। 'Plot.margin' के साथ खेलना मुझे एक ही आकार के प्लॉट्स प्राप्त करने में सक्षम बनाता है? अभी बाईं ओर का साजिश क्षेत्र दाईं ओर से छोटा है। – csgillespie

+0

@csgillespie, ऐसा लगता है, मैंने जवाब संपादित किया, अब यह बेहतर दिखता है। – Julius

+0

धन्यवाद। यह वही समाधान है जो मैं आया था, ** लेकिन ** मैंने स्क्रीन के किनारे से पैनल लेबल को स्थानांतरित करने के बारे में नहीं सोचा था - साफ। समाधान थोड़ा हैकी है, लेकिन मुझे संदेह है कि यह सबसे अच्छा समाधान है। बीटीडब्ल्यू, '+ ylab (NULL)' का उपयोग करके कोई वाई-अक्ष लेबल प्रदर्शित नहीं करता है, जो चीज़ को थोड़ा आसान बना सकता है। धन्यवाद। – csgillespie