2012-09-03 17 views
17

ggplot2 के बीच क्षैतिज अंतर को बदलने के लिए opts में तर्क panel.margin का उपयोग करके एक पहलू साजिश के बीच मार्जिन को बदलने की क्षमता है। ऐसा लगता है कि क्षैतिज और ऊर्ध्वाधर अंतर दोनों बदलते हैं। क्या दूसरे को बदलने के बिना क्षैतिज या ऊर्ध्वाधर के अंतर को बदलने का कोई तरीका है?पहलुओं (ggplot2)

परिणाम और वांछित परिणाम के साथ एक उदाहरण:

mtcars[, c("cyl", "am", "gear")] <- lapply(mtcars[, c("cyl", "am", "gear")], as.factor) 

p <- ggplot(mtcars, aes(mpg, wt, group = cyl)) + 
    geom_line(aes(color=cyl)) + 
    geom_point(aes(shape=cyl)) + 
    facet_grid(gear ~ am) + 
    theme_bw()   

p + opts(panel.margin = unit(1, "lines")) 

तो यह वर्तमान में दिखाई देता है: enter image description here

हम इसे देखने के लिए कैसे कर सकते हैं और अधिक की तरह: enter image description here

+0

मुझे लगता है कि आप शीर्ष, दाएं, नीचे और बाएं मार्जिन के लिए चार तर्कों का उपयोग कर सकते हैं लेकिन आप नहीं कर सकते। ओह। –

+1

@lselzer, मैंने भी सोचा, लेकिन मुझे लगता है कि विकल्प केवल 'plot.margin' के लिए है। एक साल पहले इस विशेषता [[https://groups.google.com/d/topic/ggplot2/tMQsVb5P69s/discussion) के बारे में पूछा गया था, इसकी उपलब्धता के जवाब में "वर्तमान में नहीं" है। – A5C1D2H2I1M1N2O1R2T1

+0

चूंकि ggplot2 0.9.2 अब 'थीम' के साथ 'opts' को प्रतिस्थापित करता है और आप कुछ चीजों को किसी अन्य से स्वतंत्र स्थानांतरित कर सकते हैं (यानी' panel.grid.major.y' आदि) मुझे लगा कि यह उपयोग करने के लिए काम कर सकता है: 'थीम (पैनल .margin.x = इकाई (1, "रेखाएं")) 'लेकिन यह नहीं है। –

उत्तर

18

9 वीं जुलाई, 2015 के रूप में, panel.margin.x और panel.margin.y

p <- p + theme(panel.margin.x=unit(0.5, "lines") + panel.margin.y=unit(1,"lines")) 

लागू किया गया है करने के लिए 15 दिसंबर, 2016 के रूप में, 'panel.spacing' लगते हैं और 'panel.spacing.x '3.3 3.3 और ggplot2 2.2.0

p <- p + theme(panel.spacing.x=unit(0.5, "lines"),panel.spacing.y=unit(1, "lines")) 
+0

सुंदर। बस इसका इस्तेमाल किया। –

8

एक मैनुअल समाधान जब तक यह सुविधा उपलब्ध हो जाती है:

library(grid) 
height <- 0.5 # Vertical spacing 
aux <- 1e-5 # Auxiliary number to identify 'height' among other heights 
width <- 0.1 # Desirable horizontal spacing 

p <- p + theme(panel.margin = unit(height + aux, "lines")) 

gtable <- ggplot_gtable(ggplot_build(p)) 
gtable$widths[sapply(gtable$widths, '[[', 1) == height + aux][[1]][[1]] <- width 
grid.draw(gtable) 

enter image description here

+0

बहुत अच्छा। उम्मीद है कि हम इसे भविष्य में उपलब्ध देखेंगे। –