Ggplot2 में facet_wrap () और facet_grid () के बीच क्या अंतर है?


80

मैं ggplot2दोनों कार्यों के लिए प्रलेखन पढ़ रहा हूं । मैं सोच रहा था कि क्या अंतर थे और प्रत्येक फ़ंक्शन ( facet_wrap()और facet_grid()) का उपयोग करने के लिए सही स्थिति क्या होगी ।

library(ggplot2)

p <- qplot(displ, hwy, data = mpg)
p + facet_wrap(~ cyl)

p + facet_grid(~ cyl)

मैं शुरुआती बिंदु के रूप में सेवा करने के लिए यह छोटा उदाहरण प्रदान करता हूं। यह अंतर लगता है कि लपेटने से भूखंड अधिक स्वायत्त हो जाते हैं और ग्रिड एक भूखंड को एक साथ बनाता है।

जवाबों:


60

नीचे दिए गए उत्तर उस मामले को संदर्भित करते हैं जब आपके पास 2 तर्क होते हैं facet_grid()या facet_wrap()

facet_grid(x ~ y)x*yकुछ भूखंड खाली होने पर भी भूखंडों का प्रदर्शन करेंगे । Ex:

library(ggplot2)
g <- ggplot(mpg, aes(displ, hwy))

4 अलग सिलेंडर और 7 अलग-अलग वर्ग मान हैं।

g + geom_point(alpha=1/3) + facet_grid(cyl~class)

उपरोक्त 4 * 7 = 28 भूखंडों को प्रदर्शित करता है, भले ही कुछ खाली हों (क्योंकि कुछ वर्गों में समान सिलेंडर मान नहीं होते हैं, जैसे कि वर्ग = "midsize" के पास कोई संगत सिलेंडर नहीं है = facet_wrap(x ~ y)दूसरे पर "5" मान) हाथ, केवल वास्तविक मूल्यों वाले भूखंडों को प्रदर्शित करता है।

g + geom_point(alpha=1/3) + facet_wrap(cyl~class)

अब 19 प्लॉट प्रदर्शित हैं, जो सिलिंडर और क्लास के हर संयोजन के लिए एक हैं।


25

facet_wrap(...)ggplotsएक ही चर में आधारित विभिन्न फ्रेम (पहलुओं) में एक साथ तार । facet_grid(...)दो चर ले सकते हैं:

p + facet_grid(cyl~class)

आप प्रत्येक पहलू में समूह में तीसरे चर का उपयोग कर सकते हैं:

qplot(displ, hwy, data=mpg,color=factor(year)) + facet_grid(cyl~class)

hwy माइलेज बनाम विस्थापन में सुधार (या उसके अभाव) को दर्शाता है # सिलिंडरों और वर्ग द्वारा।


11
facet_wrapदो चर भी ले सकते हैं।
मारबेल

9

एकल चर भूखंडों के लिए आप facet_grid()या तो उपयोग कर सकते हैं या facet_wrap()

facet_wrap(~variable)के स्तर की संख्या के लिए भूखंडों का एक सममित मैट्रिक्स लौटेगा variable

facet_grid(.~variable)variableक्षैतिज रूप से वितरित के स्तरों के बराबर पहलू लौटाएगा ।

facet_grid(variable~.)variableऊर्ध्वाधर रूप से वितरित स्तर के बराबर पहलुओं को लौटाएगा ।


1
क्या आप जानते हैं कि यह क्यों है facet_wrap(~variable)और क्या नहीं facet_wrap(variable~)?
amsquareb

9

मुख्य रूप से ggplot2 पुस्तक से उद्धृत, पी। 148 फ।

तीन प्रकार के होते हैं:

  • facet_null() : एक एकल भूखंड, डिफ़ॉल्ट।
  • facet_wrap() : 2 डी में पैनल के 1 डी रिबन को "लपेटता है"।
  • facet_grid() : चरों और स्तंभों को बनाने वाले चरों द्वारा परिभाषित पैनलों का 2d ग्रिड तैयार करता है।

यहाँ छवि विवरण दर्ज करें

पहलू लपेटो

facet_wrap()पैनलों की एक लंबी रिबन बनाता है (चर के किसी भी संख्या से उत्पन्न) और इसे 2d में लपेटता है। यह उपयोगी है यदि आपके पास कई स्तरों के साथ एक एकल चर है और अधिक स्थान कुशल तरीके से भूखंडों की व्यवस्था करना चाहते हैं।

आप कैसे रिबन के साथ एक ग्रिड में लपेटा जाता है नियंत्रित कर सकते हैं ncol, nrow, as.tableऔर dirncolऔर nrowकितने कॉलम और रो को नियंत्रित करें (आपको केवल एक सेट करने की आवश्यकता है)। as.tableयह नियंत्रित करता है कि क्या टेबल को टेबल की तरह बिछाया गया है ( TRUE), नीचे-दाएं में उच्चतम मान या FALSEशीर्ष-दाईं ओर उच्चतम मान के साथ एक भूखंड ( )। dirलपेट की दिशा को नियंत्रित करता है: h क्षैतिज या v ertical।

फेस ग्रिड

से ?facet_grid: facet_grid()पंक्ति और स्तंभ मुखर चर द्वारा परिभाषित पैनलों का एक मैट्रिक्स बनाता है। यह सबसे उपयोगी है जब आपके पास दो असतत चर होते हैं, और चर के सभी संयोजन डेटा में मौजूद होते हैं।

आप पंक्तियों या स्तंभों में कई चर का उपयोग कर सकते हैं, उन्हें "एक साथ" जोड़कर, जैसे a + b ~ c + d

facet grid()नामक एक अतिरिक्त पैरामीटर है space, जो समान मान लेता है scales

# If scales and space are free, then the mapping between position
# and values in the data will be the same across all panels. This
# is particularly useful for categorical axes
ggplot(subset(mpg, manufacturer %in% c("audi", "honda", "toyota")) , aes(drv, model)) +
    geom_point() +
    facet_grid(manufacturer ~ ., scales = "free", space = "free") +
    theme(strip.text.y = element_text(angle = 0))

यहाँ छवि विवरण दर्ज करें

(सरलीकृत) उदाहरण से लिया गया ?facet_grid

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.