ईएसएस प्लॉट सीधे एक एमएसीएस बफर के लिए?


33

प्रश्न: मैं कैसे ईएसएस (आर) को सीधे एमएसीएस बफर में प्लॉट कर सकता हूं?

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

तो: क्या एमएसीएस बफर के लिए "सीधे" (या यहां तक ​​कि अप्रत्यक्ष रूप से) साजिश करने का कोई तरीका है और, अधिक महत्वपूर्ण बात, उपयोगकर्ता द्वारा बहुत अधिक मैनुअल हस्तक्षेप के बिना ऐसा करना?

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

मैं यहां अटकलें लगा रहा हूं, लेकिन यह मुझे चौंकाता है, क्योंकि आर और एमएसी दोनों एसवीजी का समर्थन करते हैं, जो कि उपयोग करने के लिए एक उपयोगी प्रारूप हो सकता है। हालांकि, यह मेरे लिए स्पष्ट नहीं है कि क्या / कैसे एक आर मक्खी पर संचार करने के लिए आर प्रक्रिया में हुक कर सकता है। वहाँ एक तरीका है एस थूक एसवीजी कोड सीधे एक Emacs बफर में है, या यह एक अस्थायी फ़ाइल के मध्यस्थ के माध्यम से जाने की आवश्यकता होगी? जब कोई R इसे बनाता है, तो एक नई अस्थायी फ़ाइल को स्वचालित रूप से देखने के लिए Emacs को कैसे समझा सकता है, या जब कोई नया प्लॉट द्वारा अस्थायी फ़ाइल अपडेट / अधिलेखित हो जाती है तो ऐसे प्लॉट बफर को अपडेट करें?


3
Emacs को एक फ़ाइल का उपयोग नहीं करना पड़ता है और इसके बजाय एक बफर में एक छवि सम्मिलित करने के लिए एक स्ट्रिंग का उपयोग कर सकते हैं, डॉक्सस्ट्रिंग देखें create-image। मैं वास्तव में R और Emacs बनाने के लिए एक दूसरे के साथ संवाद करने में आपकी मदद नहीं कर सकता, हालांकि इसे प्राप्त करने के लिए।
वामासा

1
ईएसएस मेलिंग सूची में इस पर चर्चा की गई है: stat.ethz.ch/pipermail/ess-help/2013-Nvent/009559.html
Ista

जवाबों:


5

पूरी तरह से सवाल का जवाब नहीं, लेकिन जब कोई आर-ऑर्ग-मोड के बेबेल में आर का उपयोग करता है:

* My example
#+name: simple-org-example
#+begin_src R :session *my-R* :dir "." :results output graphics :file example.svg :width 18 :height 9
  plot(cyl~mpg,data=mtcars)
#+end_src

C-c C-cओआरजी-मोड में इस पर करने से एक *my-R*इंटरेस्टिंग ईएसएस बफर के साथ एक बफर बन जाएगा, example.svgफ़ाइल में प्लॉट बनाएं और फिर आप फ़ाइल के लिए बनाए गए लिंक पर क्लिक (या प्रेस कर सकते हैं), जो इसे खोल देगा।

संगठन-मोड इनलाइन छवि में सक्षम है, लेकिन यह तब करता है जब इस कार्यक्षमता को टॉगल किया जाता है ( M-x org-toggle-inline-imagesफ़ाइल के साथ ) या फ़ाइल खोलने पर, लेकिन इसमें एक कोड चलाने पर नहीं।

तो यह पूर्ण समाधान नहीं है।


3
आप सेटिंग द्वारा स्वचालित रूप से प्रदर्शित करने के लिए छवि प्राप्त कर सकते हैं (add-hook 'org-babel-after-execute-hook 'org-display-inline-images), लेकिन यह (मुझे लगता है) अभी भी वास्तव में नहीं है जो ओपी चाहता था।
इस्टा

0

मैं सिर्फ पोस्ट एक जवाब के लिए पुराने पोस्ट आप अपने प्रश्न में बात कर रहे हैं। जैसा कि मैंने वहां लिखा है, यह आपके लिए काम नहीं कर सकता है क्योंकि यह आपके समग्र कंप्यूटर वर्कफ़्लो में काफी नाटकीय बदलाव होगा।

लेकिन exwm , किसी भी गैर- emacs विंडो को emacs बफर होने की अनुमति देकर, emacs बफ़र्स में R प्लॉट्स को रखने की अनुमति देता है जो कि सामान्य emacs सेटिंग्स और कीबाइंडिंग द्वारा नियंत्रित होते हैं।

यहाँ एक उदाहरण है कि यह कैसा दिखता है:

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

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