2012-09-17 13 views
12

मैं एक चार्ट के ग्रे प्लॉट क्षेत्र को एक कारक आधारित धुरी और एक संख्यात्मक धुरी के साथ कैसे बढ़ा सकता हूं ताकि geom_text() प्लॉट्स में टेक्स्ट लेबल्स देखे जा सकें और विस्तार न करें साजिश क्षेत्र के बाहर?प्लॉट किनारों पर geom_text से निपटने के लिए ggplot में साजिश क्षेत्र में वृद्धि

ggplot showing geom_text() plot where labels extend outside the plot area

विशेष रूप से, मैं ग्रे क्षेत्र का विस्तार करने की साजिश क्षेत्र है कि पाठ लेबल पूर्ण में प्रदर्शित करने की अनुमति देता है के भीतर एक मार्जिन क्षेत्र प्रदान करना चाहते हैं।

या क्या कोई बेहतर तरीका है?

+10

आप 'विस्तार' तर्क को 'scale_x_discrete' और/या' scale_y_continuous' 'पर आज़मा सकते हैं। यह लंबाई 2 का एक संख्यात्मक वेक्टर लेता है, पहला विस्तार के लिए एक कारक होता है और दूसरा एक योजक विस्तार होता है। यह देखने के लिए अलग-अलग मूल्यों का प्रयास करें कि क्या अच्छा काम करता है। –

+0

मेरी इच्छा है कि फेलो का वर्डक्लाउड ggplot2 के साथ संगत था क्योंकि उसके अपडेट किए गए संस्करण विशेष रूप से इस के साथ सौदे करते हैं: http://blog.fellstat.com/?p=248 –

+0

@BrianDiggs उस टिप के लिए धन्यवाद। 'विस्तार' चाल चल रहा है, हालांकि मुझे लगता है कि शैलियों के कुछ tweaking के परिणामस्वरूप आवश्यक है ... मैं शुरू करने के लिए 'theme_bw()' कोशिश कर रहा हूँ ... – psychemedia

उत्तर

1

आप ggplot_gtable का उपयोग करके प्रत्येक ggplot का लेआउट विकल्प बदल सकते हैं, फिर grid.arrange का उपयोग करके सभी प्लॉट प्रदर्शित कर सकते हैं।

library(ggplot2) 
library(gridExtra) 
## create a dummy ggplot 
(g1 <- ggplot(mtcars, aes(wt, mpg)) + 
     geom_text(aes(label=rownames(mtcars)), size=6, angle=45) + 
     theme(plot.margin = unit(rep(1, 4), "cm"))) 

स्पष्ट रूप से टेक्स्ट लेबल प्लॉट क्षेत्र के बाहर विस्तार नहीं करते हैं।

gg_table <- ggplot_gtable(ggplot_build(g1)) 
gg_table$layout$clip[gg_table$layout$name=="panel"] <- "off" 
grid.draw(gg_table) 

प्रत्येक पैनल के लिए एक gg_table बनाएं, फिर grid.arrange का उपयोग प्रदर्शित करने के लिए सभी:: लेकिन निम्नलिखित कोड सिर्फ इतना है कि अनुमति देता है

grid.arrange(gg_table, gg_table, gg_table, gg_table, ncol=2) 

enter image description here

मुझे पता है, यह श्रम गहन है, लेकिन आप समय बचाने के लिए एकाधिक ggplots और gg_tables बनाने के लिए एक फ़ंक्शन लिख सकते हैं।

संबंधित मुद्दे