Ggplot2 कुल्हाड़ियों को डेटा (सीमा के बाहर) को हटाने के बिना सीमित करें: ज़ूम करें


106

यदि आप ggplot में अक्ष सीमाएँ निर्दिष्ट करते हैं तो आउटलाइनिंग पॉइंट हटा दिए जाते हैं। यह बिंदुओं के लिए ठीक है, लेकिन आप लाइनों को निर्दिष्ट श्रेणी के साथ काटना चाहते हैं, लेकिन ggplot के तरीके rangeया xlim/ylimइन्हें हटा देते हैं। क्या आउटलाइंग डेटा को हटाए बिना प्लॉट अक्ष सीमा को निर्दिष्ट करने का एक और तरीका है?

जैसे

require(ggplot2)
d = data.frame(x=c(1,4,7,2,9,7), y=c(2,5,4,10,5,3), grp=c('a','a','b','b','c','c'))
ggplot(d, aes(x, y, group=grp)) + geom_line()
ggplot(d, aes(x, y, group=grp)) + geom_line() + scale_y_continuous(limits=c(0,7))
ggplot(d, aes(x, y, group=grp)) + geom_line() + ylim(0,7)

जवाबों:


168

हैडली ने इसे pp। 99 पर समझाया; यदि आप का ggplot2 पुस्तक (प्रथम संस्करण) , या पीपी १६० - १६३ - १३३ है तो आपके पास दूसरा संस्करण है

मुद्दा यह है कि, जैसा कि आप कहते हैं, limitsपैमाने या सेटिंग के अंदर ylim()डेटा को फेंक दिया जाता है, क्योंकि वे डेटा को बाधित कर रहे हैं। एक सच्चे ज़ूम के लिए (सभी डेटा रखें), आपको कार्टेसियन समन्वय प्रणाली (या अन्य समन्वय प्रणालियों https://ggplot2.tidyverse.org/reference/#section-coordinate-systems ) के अंदर सीमाएं निर्धारित करने की आवश्यकता है । अधिक देखने के लिए: http://docs.ggplot2.org/current/coord_cartesian.html

ggplot(d, aes(x, y, group=grp)) + 
    geom_line() + 
    coord_cartesian(ylim=c(0, 7))

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


2
क्या होगा यदि मुझे उपयोग करने के लिए ord_cartesian एक विकल्प नहीं है geom_boxplot?
एवरेट्स

3
coord_cartesianअभी भी geom_boxplotया अन्य ज्यामिति के साथ एक विकल्प है ।
eipi10

हां, लेकिन यह पता नहीं लगा सकते कि क्षैतिज बॉक्सप्लॉट्स को कैसे करना है क्योंकि इसके लिए coord_flipआपको दो कॉर्ड्स की आवश्यकता नहीं है।
15:13 पर jtr13

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