2016-12-19 27 views
7

में मार्जिन/आकृति क्षेत्र की चौड़ाई को संरेखित/सेट करना मुझे एक दूसरे के नीचे कई भूखंडों की स्थिति की आवश्यकता है और मैं मार्जिन और आकृति क्षेत्रों की चौड़ाई समान होना चाहता हूं, इसलिए वे अच्छी तरह से संरेखित हैं। ध्यान दें, मुझे दो एकल भूखंडों की आवश्यकता है, न कि एक संयुक्त साजिश। मैं प्रत्येक को एक अलग पीएनजी फ़ाइल में सहेजना चाहता हूं। मैं सिर्फ उनकी संरचना (मार्जिन, आकृति क्षेत्र का आकार) समान होना चाहता हूं।)ggplot2

;

library(ggplot2) 

d <- data.frame(label=c("some very longe label with lots of text", 
         "another long label with lots of text", 
         "short", 
         "also short", 
         "          short", 
         "        also short"), 
         x = 1:6) 

ggplot(d[1:2, ], aes(label, x)) + geom_bar(stat = "identity") + coord_flip() 
ggplot(d[3:4, ], aes(label, x)) + geom_bar(stat = "identity") + coord_flip() 

enter image description here enter image description here

मैं क्या चाहता हूँ, कम या ज्यादा नीचे की तरह, बिना पाठ्यक्रम के अतिरिक्त कारतूस जोड़ने साजिश 2 भूखंड 1 में के रूप में ही बाईं मार्जिन चौड़ाई है enter image description here

आधार ग्राफिक्स में मैं केवल par("mar") सेट कर दूंगा।

मैं इसे ggplot में कैसे प्राप्त कर सकता हूं?

+0

कृपया देखें इस टिप्पणी http://stackoverflow.com/questions/41230345/ggplot2-change-plot-areas-for-same-size- में दिए गए लिंक प्लॉट-इन-मल्टीप्लॉट # टिप्पणी 6662588_41230345 – user20650

+0

https://github.com/baptiste/egg#setting-panel-size – baptiste

उत्तर

5

last link from the comment above, से उत्तर के आधार पर आप भूखंडों की चौड़ाई को समान कर सकते हैं। उस उत्तर से केवल अंतर यह है कि वे संयुक्त नहीं हैं।

अपने भूखंडों के लिए

तो

library(ggplot2) 
p1 <- ggplot(d[1:2, ], aes(label, x)) + geom_bar(stat = "identity") + coord_flip() 
p2 <- ggplot(d[3:4, ], aes(label, x)) + geom_bar(stat = "identity") + coord_flip() 

समानता भूखंड की चौड़ाई

library(grid) 
gl <- lapply(list(p1,p2), ggplotGrob) 
wd <- do.call(unit.pmax, lapply(gl, "[[", 'widths')) 
gl <- lapply(gl, function(x) { 
     x[['widths']] = wd 
     x}) 

प्लॉट

grid.newpage(); grid.draw(gl[[1]]) 
grid.newpage(); grid.draw(gl[[2]]) 

कौन सा पैदा करता है:

प्लॉट 1

012,

enter image description here

प्लॉट 2

enter image description here

+0

बढ़िया, धन्यवाद! चौड़ाई यहाँ कुंजी है। क्या आपके पास ggplot आकृति क्षेत्रों की संरचना का अच्छा संदर्भ है, जैसे मूल ग्राफिक्स के लिए: http://www.melissaclarkson.com/resources/R_guides/documents/figure_layout_Ver1.pdf –

+0

@MarkHeckmann; बैपटिस्ट वास्तव में इस के साथ मदद करने वाला व्यक्ति है। लेकिन शायद उनके ['अंडे पैकेज'] से' expose_layout' (https://github.com/baptiste/egg) उपयोगी होगा। तो 'p1 <- qplot (mpg, wt, data = mtcars, color = cyl) + ggtitle (" facetted plot ") का उपयोग करें; जी = expose_layout (पी 1); जी $ चौड़ाई '। फिर देखें कि विस्तारित लेआउट प्लॉट के साथ चौड़ाई कैसे संरेखित होती है। (चौड़ाई बाएं से दाएं तक जाती है) (जांच के लिए अन्य चीजों के लिए 'नाम (जी)' भी देखें) – user20650