स्क्रिप्ट्स में ggplot प्लॉट Rstudio में प्रदर्शित नहीं होते हैं


82

मेरे पास Rstudio के साथ एक अजीब मुद्दा है: यदि कोई स्क्रिप्ट एक प्लॉट प्रदर्शित करने के लिए ggplot2 फ़ंक्शन को कॉल करती है, तो स्क्रिप्ट चलाने के लिए स्रोत का उपयोग करने से भूखंडों का उत्पादन नहीं होता है। यदि मैं पूरी स्क्रिप्ट का चयन करता हूं Ctrl+A, तो वर्तमान लाइन या चयन ( Ctrl+Enter) चलाएं , फिर प्लॉट प्रदर्शित करता है। इसी तरह, कंसोल में प्लॉटिंग कमांड टाइप करने से सही आउटपुट मिलता है।

उदाहरण के लिए:

library(ggplot2)

p = ggplot(mtcars, aes(wt, mpg))
p + geom_point()

केवल उत्पादन होगा यदि कंसोल में चिपकाया जाता है, यदि सॉर्ट नहीं किया गया है।

इसके बारे में अन्य प्रश्न हैं, लेकिन न तो यह मददगार है:

जब स्क्रिप्ट स्क्रिप्ट की जाती है तो मैं प्लॉट प्रदर्शित करने के लिए Rstudio को कैसे प्राप्त कर सकता हूं? मैं Rstudio 0.98.1062 और R 3.1.1 का उपयोग कर रहा हूं।

जवाबों:


129

समाधान स्पष्ट रूप print()से ggplot ऑब्जेक्ट पर कॉल करना है:

library(ggplot2)

p <- ggplot(mtcars, aes(wt, mpg))
p <- p + geom_point()
print(p)

ggplotसमारोह रिटर्न वर्ग ggplot की वस्तु; ggplot2 क्लास ggplot की printवस्तुओं पर अलग तरह से व्यवहार करने के लिए फ़ंक्शन को ओवरलोड करके काम करता है - उन्हें STDOUT में प्रिंट करने के बजाय, यह चार्ट बनाता है।

इंटरैक्टिव मोड में सब कुछ अच्छा काम कर रहा है, क्योंकि आर मानता है कि अधिकांश कमांड print()फ़ंक्शन के माध्यम से चलाए जाते हैं। यह हमारी सुविधा के लिए है और हमें rnorm(1)कोई भी दृश्यमान आउटपुट टाइप करने और प्राप्त करने की अनुमति देता है । जब रन करंट सेलेक्शन कमांड का उपयोग किया जाता है ( Ctrl+Enter), RStudio व्यवहार करता है जैसे कि प्रत्येक चयनित लाइन को इंटरएक्टिव मोड और रन में टाइप किया गया था। आप Consoleकुछ चयनित पंक्तियों को चलाने के बाद अपने कमांड इतिहास को फलक में देख कर सत्यापित कर सकते हैं।

लेकिन फ़ाइल द्वारा पढ़ी जाने पर यह सुविधाजनक मोड छोड़ दिया जाता है source()। चूंकि यह फ़ंक्शन चलाने का इरादा है (संभवतः लंबे और कम्प्यूटेशनल-महंगे) आर स्क्रिप्ट, यह कम-प्राथमिकता वाले संदेशों के साथ STDOUT को प्रदूषित करने के लिए अवांछनीय है। इसलिए source()डिफ़ॉल्ट रूप से केवल त्रुटि संदेश आउटपुट होगा। यदि आप कुछ और चाहते हैं, तो आपको उसके लिए स्पष्ट रूप से पूछना होगा।


20

हालांकि यह एक बहुत पुराना सवाल है। मेरे पास एक ही समस्या थी और एक त्वरित समाधान मिला, यदि आप आर स्टूडियो एडिट बॉक्स पर "स्रोत" बटन का उपयोग करना चाहते हैं।

आप बस "इको के साथ स्रोत" (Ctrl + Shift + Enter) चालू कर सकते हैं और भूखंड अपेक्षित रूप से दिखाता है


1
महान, वह नहीं जानता था! यह @ मिरोस्लाव ज़ाल्वस्की द्वारा दिए गए स्पष्टीकरण को अच्छी तरह से जोड़ता है।
Uwe

9

मैं हाल ही में इस सवाल पर हुआ और महसूस किया कि show(p)प्लॉट बनाने के बाद कॉल करने का तरीका सबसे अधिक है ।


क्या आपके पास कोई स्रोत है जो यह सबसे अद्यतित तरीका है? मुझे यह सब मिल सकता है: ggplot2.tidyverse.org/reference/print.ggplot.html
क्रिस

2

इसी तरह की समस्या (RStudio में दिखाई नहीं दे रहे हैं) की खोज करते समय मुझे यह प्रश्न मिला। मैं इसे भागों में चलाकर एक जटिल ggplot2 ब्लॉक का निवारण करने की कोशिश कर रहा था, लेकिन प्लॉट विंडो में कुछ भी नहीं दिखा सका।

कारण: tiff()मैंने पहले जो समारोह खोला था वह बंद नहीं हुआ था।

समाधान: मैं dev.off()कुछ समय तक चला जब तक कि मेरे सभी पहले के tiff()कार्य पूरे नहीं हो गए, तब मैं RStudio में प्लॉट बनाने और प्लॉट विंडो में परिणाम देखने में सक्षम था।

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