एक्स-टिक्स की समान लंबाई वाले कई आर प्लॉट्स को मजबूर करने के लिए कैसे? [डुप्लिकेट]

Nov 26 2020

R में कई पैकेज एक ग्रिड में mulitple प्लॉट की व्यवस्था करने में सक्षम हैं, जैसे gridExtraऔर cowplot। एक ही पंक्ति / स्तंभ में भूखंड डिफ़ॉल्ट रूप से उनकी सीमा पर संरेखित है। निम्नलिखित एक उदाहरण है। तीन हिस्टोग्राम एक ही भूखंड पर लंबवत व्यवस्थित हैं। आप देख सकते हैं कि x-ticks को बदला नहीं गया है और इस तरह ग्रिड प्लॉट थोड़ा बदसूरत लग रहा है।

library(ggplot2);library(grid);library(cowplot)

p1 <- ggplot(data = NULL, aes(x = rt(10,19))) + 
  geom_histogram(bins = 5, fill = "darkgreen", color = "darkgrey", alpha = 0.6) +
  labs(y = "", x = "")
# similar plots for p2, p3

plot_grid(p1, textGrob("N=10"),
             p2, textGrob("N=100"),
             p3, textGrob("N=10000"),
             nrow=3, rel_widths = c(4/5, 1/5))

समस्या यह है कि टूल को प्लॉट करना baseऔर ggplot2एक्स-टिक्स की लंबाई को ठीक नहीं करेगा और cowplot::plot_gridप्लॉट्स को स्वचालित रूप से अधिकतम चौड़ाई तक खींचता है। कुछ भूखंडों में व्यापक वाई-लेबल होते हैं इसलिए वे छोटे एक्स-टिक्स के साथ समाप्त हो जाते हैं।

अब मैं तीन हिस्टोग्राम को एक्स-टिक्स की समान लंबाई के लिए मजबूर करना चाहता हूं। मैं जानना चाहूंगा कि क्या इस तरह की समस्याओं के लिए कोई तरीका / पैकेज है? ध्यान दें कि आमतौर पर कवक के साथ संयुक्त डेटा पुनर्वितरण ggplot2::facet_wrapइस मुद्दे को हल करना चाहिए, लेकिन मुझे अभी भी आश्चर्य है कि क्या कोई अधिक प्रत्यक्ष समाधान है।

जवाब

2 teunbrand Nov 26 2020 at 14:33

मुझे व्यक्तिगत रूप से लगता है कि पैचवर्क भूखंडों के संरेखण को इनायत से संभालता है और आप एक सामान्य पैमाने पर सीमाएं निर्धारित करके एक्स-एक्सिस साझा कर सकते हैं।

library(ggplot2)
library(patchwork)

set.seed(123)

plots <- lapply(c(10, 100, 1000), function(n) {
  ggplot(mapping = aes(x = rt(n, 19))) +
    geom_histogram(bins = round(sqrt(n)) * 2,
                   fill = "darkgreen", colour = "darkgrey",
                   alpha = 0.6) +
    labs(y = "", x = "")
})

plots[[1]] / plots[[2]] / plots[[3]] &
  scale_x_continuous(limits = c(-5, 5),
                     oob = scales::oob_squish)

2020-11-26 को रेप्रेक्स पैकेज (v0.3.0) द्वारा बनाया गया

1 ClausWilke Nov 27 2020 at 06:53

plot_grid()समारोह भूखंडों संरेखित कर सकते हैं, यहाँ देखें:https://wilkelab.org/cowplot/articles/aligning_plots.html

library(ggplot2)
library(grid)
library(cowplot)

set.seed(123)

plots <- lapply(c(10, 100, 1000), function(n) {
  ggplot(mapping = aes(x = rt(n, 19))) +
    geom_histogram(bins = round(sqrt(n)) * 2,
                   fill = "darkgreen", colour = "darkgrey",
                   alpha = 0.6) +
    labs(y = "", x = "") +
    scale_x_continuous(
      limits = c(-5, 5),
      oob = scales::oob_squish
    )
})

plot_grid(
  plots[[1]], textGrob("N=10"),
  plots[[2]], textGrob("N=100"),
  plots[[3]], textGrob("N=10000"),
  nrow=3, rel_widths = c(4/5, 1/5), align = "v", axis = "l"
)

2020-11-26 को रेप्रेक्स पैकेज (v0.3.0) द्वारा बनाया गया