आधारित समाधानों में से एक यह grid.arrange
है कि वे पत्र (ए, बी, आदि) के साथ भूखंडों को लेबल करना मुश्किल बनाते हैं, क्योंकि अधिकांश पत्रिकाओं की आवश्यकता होती है।
मैंने इसे (और कुछ अन्य) मुद्दों को हल करने के लिए काउप्लॉट पैकेज लिखा , विशेष रूप से फ़ंक्शन plot_grid()
:
library(cowplot)
iris1 <- ggplot(iris, aes(x = Species, y = Sepal.Length)) +
geom_boxplot() + theme_bw()
iris2 <- ggplot(iris, aes(x = Sepal.Length, fill = Species)) +
geom_density(alpha = 0.7) + theme_bw() +
theme(legend.position = c(0.8, 0.8))
plot_grid(iris1, iris2, labels = "AUTO")

जो वस्तु plot_grid()
लौटाता है वह दूसरी ggplot2 वस्तु है, और आप इसे ggsave()
हमेशा की तरह बचा सकते हैं :
p <- plot_grid(iris1, iris2, labels = "AUTO")
ggsave("plot.pdf", p)
वैकल्पिक रूप से, आप काउप्लॉट फ़ंक्शन का उपयोग कर सकते हैं save_plot()
, जो चारों ओर एक पतला आवरण है ggsave()
जो संयुक्त भूखंडों के लिए सही आयाम प्राप्त करना आसान बनाता है, जैसे:
p <- plot_grid(iris1, iris2, labels = "AUTO")
save_plot("plot.pdf", p, ncol = 2)
( ncol = 2
तर्क बताता है save_plot()
कि अगल-बगल दो प्लॉट हैं, और save_plot()
सहेजी गई छवि को दो बार चौड़ा करता है।)
ग्रिड में भूखंडों को व्यवस्थित करने के तरीके के अधिक गहराई से वर्णन के लिए इस विगनेट को देखें । एक साझा किंवदंती के साथ प्लॉट बनाने का तरीका समझाने वाला एक विगनेट भी है ।
भ्रम की एक लगातार बात यह है कि काउप्लॉट पैकेज डिफ़ॉल्ट ggplot2 थीम को बदलता है। पैकेज उस तरह से व्यवहार करता है क्योंकि यह मूल रूप से आंतरिक प्रयोगशाला उपयोगों के लिए लिखा गया था, और हम कभी भी डिफ़ॉल्ट विषय का उपयोग नहीं करते हैं। यदि यह समस्या का कारण बनता है, तो आप उनके आसपास काम करने के लिए निम्नलिखित तीन दृष्टिकोणों में से एक का उपयोग कर सकते हैं:
1. हर प्लॉट के लिए मैन्युअल रूप से थीम सेट करें। मुझे लगता है कि प्रत्येक प्लॉट के लिए किसी विशेष विषय को निर्दिष्ट करना हमेशा अच्छा होता है, जैसे मैंने + theme_bw()
ऊपर दिए उदाहरण में किया था । यदि आप किसी विशेष विषय को निर्दिष्ट करते हैं, तो डिफ़ॉल्ट विषय कोई मायने नहीं रखता है।
2. डिफ़ॉल्ट थीम को वापस ggplot2 डिफ़ॉल्ट पर वापस लाएं। आप इसे कोड की एक पंक्ति के साथ कर सकते हैं:
theme_set(theme_gray())
3. पैकेज संलग्न किए बिना काउलपॉट फ़ंक्शन को कॉल करें। आप कॉल नहीं कर सकते हैं library(cowplot)
या require(cowplot)
इसके बजाय प्रीप्ल्ड करके काउप्लॉट फ़ंक्शन को कॉल कर सकते हैं cowplot::
। उदाहरण के लिए, ggplot2 डिफ़ॉल्ट थीम का उपयोग करने वाला उपरोक्त उदाहरण बन जाएगा:
## Commented out, we don't call this
# library(cowplot)
iris1 <- ggplot(iris, aes(x = Species, y = Sepal.Length)) +
geom_boxplot()
iris2 <- ggplot(iris, aes(x = Sepal.Length, fill = Species)) +
geom_density(alpha = 0.7) +
theme(legend.position = c(0.8, 0.8))
cowplot::plot_grid(iris1, iris2, labels = "AUTO")

अपडेट:
- कोप्लॉट 1.0 के रूप में, डिफ़ॉल्ट ggplot2 थीम को अब नहीं बदला गया है।
- Ggplot2 3.0.0 के रूप में, प्लॉट को सीधे लेबल किया जा सकता है, उदाहरण के लिए यहां देखें ।