geom_density_ridges
ggridges
पैकेज से geom ने ridgelines बनाई, और यदि बैंडविड्थ निर्दिष्ट नहीं है, तो यह एक समझदार मान खोजने का प्रयास करता है। यह उस मान की रिपोर्ट करने के लिए base
आर message
फ़ंक्शन का उपयोग करता है (https://twitter.com/ClausWilke/status/921363157553172480 देखें)।ggplot अपने geoms द्वारा उत्पन्न संदेशों को दबाने की अनुमति क्यों नहीं देता है?
base
आर फ़ंक्शन suppressMessages
फ़ंक्शन ऐसे संदेशों को दबाने के लिए डिज़ाइन किया गया है।
message('This is a message');
और यह कोड outputs कुछ भी नहीं:
suppressMessages(message('This is a message'));
हालांकि, किसी कारण से, संदेशों के दबाने लगता है, उम, दबा दिया जब इस geom में जोड़ा जाता है उदाहरण के लिए, इस कोड को संदेश आउटपुट एक ggplot। निम्नलिखित कोड अभी भी संदेश का उत्पादन करता है: (। विशेष रूप से, "Picking joint bandwidth of 319
")
require('ggplot2');
require('ggridges');
suppressMessages(ggplot(Orange, aes(x=age,y=Tree)) + geom_density_ridges());
ऐसा क्यों है? क्या ggplot
यह सुनिश्चित करने के लिए कुछ करता है कि उपयोगकर्ता के विनिर्देश के बावजूद संदेश आते हैं? या यह वास्तव में समझदार व्यवहार है जिसे मैं अभी नहीं जानता?
RMarkdown रिपोर्ट जेनरेट करते समय, खंड विकल्प message
को message=FALSE
पर सेट किया जा सकता है, जो प्रतिपादन स्तर पर सभी संदेशों को दबा देता है। और चूंकि यह मेरा उपयोग मामला है, मेरी समस्या हल हो गई है।
और ggridges
पैकेज के लेखक क्लॉस विल्के के अनुसार, आप संदेश से बचने के लिए मैन्युअल रूप से bandwidth
सेट कर सकते हैं (https://twitter.com/ClausWilke/status/921361195231215616)।
लेकिन क्योंsuppressMessages
संदेश को पहली बार दबाया नहीं है?
क्या यह अपेक्षित व्यवहार है जिसे मैं अभी नहीं जानता हूं?
मैं प्रलेखन यह कहा गया में देखा 'suppressMessages एक संदर्भ है कि सभी 'सरल' नैदानिक messages.' पर ध्यान नहीं देता में अपनी अभिव्यक्ति का मूल्यांकन करता है मुझे आश्चर्य है अगर कुंजी शब्द यहाँ है * सरल * ... – Lyngbakr
तो आप मैन्युअल रूप से फोन दुभाषिया को आपके लिए उस पर ध्यान देने की बजाय 'प्रिंट' तो 'suppressMessages' संदेशों को दबा देता है। 'suppressMessages (प्रिंट (ggplot (ऑरेंज, एईएस (एक्स = आयु, वाई = ट्री)) + geom_density_ridges()))' एक बिंदु पर मैंने इस प्रक्रिया को थोड़ा बेहतर समझा (कैसे संदेशों को पारित किया गया और कैसे दबाने का काम करता है और यह सब कुछ) लेकिन मैं लंबे समय से कुछ विवरण भूल गया हूं इसलिए 'क्यों' समझाते हुए एक वास्तविक प्रतिक्रिया की उम्मीद कर रहा हूं। – Dason
@Dason मुझे लगता है कि आपको यह मिला है। जब तक आप ऑब्जेक्ट पर 'प्रिंट() 'कॉल नहीं करते हैं तब तक संदेश उत्पन्न नहीं होते हैं। यदि आप केवल आर कंसोल में एक चर टाइप करते हैं, तो आर उस वस्तु पर 'प्रिंट() 'को स्पष्ट रूप से कॉल करता है और परिणाम दिखाता है। यदि आप 'supressMessages (ggplot (...)) चलाते हैं, तो यह वास्तव में 'प्रिंट (supressMessages (ggplot (...)) के समान है) और इमारत के दौरान उत्पन्न कोई संदेश नहीं है। प्रिंटिंग के दौरान आपको चुप्पी देने के लिए आपको 'supressMessages (प्रिंट (ggplot (...)) की आवश्यकता है। – MrFlick