2015-09-10 8 views
28

मुझे यह चेतावनी मिलती है जब मैं ggplot के साथ साजिश उत्पन्न करने का प्रयास कर रहा हूं।ggplot2 चेतावनी समझाएं: "गायब मान वाले हटाए गए के पंक्तियां"

कुछ समय के लिए ऑनलाइन शोध करने के बाद कई लोगों ने सुझाव दिया कि मेरे डेटाबेस में शून्य मान या सामान्य रूप से अनुपलब्ध डेटा है, जो मामला नहीं था।

In this question स्वीकार किए जाते हैं जवाब कहते हैं निम्नलिखित:

चेतावनी का मतलब है कि कुछ तत्व निकाल दिए जाते हैं क्योंकि वे निर्दिष्ट श्रेणी

मैं सोच रहा था वास्तव में क्या इस रेंज का उल्लेख करता है के बाहर गिर और सभी चेतावनियों से बचने के लिए कोई व्यक्ति इस सीमा को मैन्युअल रूप से कैसे बढ़ा सकता है?

+3

उस सवाल पर 'y' अक्ष पर एक सीमा होती है। इस फ़ंक्शन के कारण मान 0 और 0.12 के बीच सीमित हैं: 'ylim (0,0.12) ' – LyzandeR

+1

एक पुनरुत्पादित उदाहरण प्रश्न का उत्तर देने में मदद करेगा। @LyzandeR सही रास्ते पर जा रहा प्रतीत होता है। – vpipkt

उत्तर

33

जो व्यवहार आप देख रहे हैं वह इस बात के कारण है कि ggplot2 साजिश की धुरी सीमाओं के बाहर मौजूद डेटा से संबंधित है। अक्षरों की श्रेणी निर्धारित करने के लिए आप scale_y_continuous (या समकक्ष, ylim) या coord_cartesian का उपयोग करते हुए इस व्यवहार को बदल सकते हैं, जैसा कि नीचे बताया गया है।

library(ggplot2) 

# All points are visible in the plot 
ggplot(mtcars, aes(mpg, hp)) + 
    geom_point() 

नीचे दिए गए कोड में, एचपी = 335 के साथ एक बिंदु साजिश की वाई-रेंज के बाहर है। इसके अलावा, क्योंकि हमने y-axis रेंज सेट करने के लिए scale_y_continuous का उपयोग किया था, इसलिए यह बिंदु किसी भी अन्य आंकड़ों या सारांश उपायों में शामिल नहीं है जो ggplot द्वारा गणना की जाती है, जैसे रैखिक प्रतिगमन रेखा।

ggplot(mtcars, aes(mpg, hp)) + 
    geom_point() + 
    scale_y_continuous(limits=c(0,300)) + # Change this to limits=c(0,335) and the warning disappars 
    geom_smooth(method="lm") 

Warning messages: 
1: Removed 1 rows containing missing values (stat_smooth). 
2: Removed 1 rows containing missing values (geom_point). 

नीचे कोड में, अश्वशक्ति = 335 के साथ बिंदु साजिश के y-सीमा के बाहर अब भी है, लेकिन इस बात फिर भी कोई आंकड़ा या इस तरह के रेखीय प्रतीपगमन के रूप में सारांश उपायों कि गणना ggplot, में शामिल है लाइन। ऐसा इसलिए है क्योंकि हमने y-axis रेंज सेट करने के लिए coord_cartesian का उपयोग किया था, और यह फ़ंक्शन उस बिंदु को बाहर नहीं करता है जो साजिश के बाहर हैं जब यह डेटा पर अन्य गणना करता है।

यदि आप इसकी और पिछली साजिश की तुलना करते हैं, तो आप देख सकते हैं कि दूसरी साजिश में रैखिक प्रतिगमन रेखा थोड़ा धीमी ढलान है, क्योंकि एचपी = 335 के साथ बिंदु को रिग्रेशन लाइन की गणना करते समय शामिल किया गया है, भले ही यह नहीं है साजिश में दृश्यमान।

ggplot(mtcars, aes(mpg, hp)) + 
    geom_point() + 
    coord_cartesian(ylim=c(0,300)) + 
    geom_smooth(method="lm") 
0

बस eipi10 द्वारा दिए गए उत्तर को पूरा करने के लिए शेक के लिए।

मुझे scale_y_continuous और न ही coord_cartesian का उपयोग किए बिना, एक ही समस्या का सामना करना पड़ रहा था।

संघर्ष एक्स अक्ष से आ रहा था, जहां मैंने limits = c(1, 30) परिभाषित किया था। ऐसा लगता है ऐसी सीमाओं के लिए पर्याप्त स्थान प्रदान नहीं करते हैं, तो आप करने के लिए "चकमा" अपने सलाखों, चाहते हैं तो आर अभी भी त्रुटि फेंकता

निकाला गया 8 लापता मूल्यों से युक्त (geom_bar)

की सीमा का समायोजन पंक्तियों एक्स अक्ष limits = c(0, 31) समस्या हल हो गई।

अंत में, भले ही आप अपने y अक्ष सीमा डाल नहीं कर रहे हैं, अपने एक्स अक्ष व्यवहार की जाँच सुनिश्चित करें कि आप पर्याप्त जगह

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