2011-11-17 11 views
7

तक स्क्रीन पर आरक्रिप्ट-निर्मित प्लॉट छोड़ना मेरे पास एक आर स्क्रिप्ट है जो डेटाबेस से पूछताछ करता है, कुछ विश्लेषण चलाता है, वर्तमान सिस्टम दिनांक के आधार पर कुछ चार्ट प्लॉट करता है।उपयोगकर्ता इंटरैक्शन

मैं इस स्क्रिप्ट को बूट पर रोजाना चलाने के लिए प्राप्त करना चाहता हूं, मैंने सोचा कि मैं आवश्यक पैरामीटर के साथ rscript.exe के शॉर्टकट का उपयोग करके इसे काफी आसानी से कर सकता हूं।

यह ठीक काम करता है, हालांकि स्क्रिप्ट चलाने के बाद छोड़ती है, चार्ट देखने के लिए बहुत उपयोगी नहीं है।

मैं XP और win7 का उपयोग कर रहा हूं।

क्या स्क्रीन पर स्क्रिप्ट से आउटपुट रखने का कोई आसान तरीका है? मैंने स्क्रिप्ट में स्कैन को शामिल करने का प्रयास किया है, लेकिन यह रोक नहीं है।

मैं मैं सिर्फ rgui खोलने सकता है, और कोड की एक लाइन को चलाने पता है, लेकिन योजना है जो आर

+0

हो सकता है कि एक ग्राफिक्स फ़ाइल (उदा पीएनजी) और करने के लिए उत्पादन पॉप अप है कि एक उचित दर्शकों के साथ स्क्रीन पर? –

+1

लेटेक्स के साथ इसका संयोजन (शायद स्वीवे का उपयोग करके, मुझे लगता है कि बिना संभव है) आपको एक रिपोर्ट के साथ पीडीएफ उत्पन्न करने की अनुमति देगा। –

+0

मैं दुर्भाग्य से लेटेक्स से अपरिचित हूं (यद्यपि एक नज़र डालेगा), और छवि दर्शक काम करने के लिए एक बहुत ही मजबूत तरीके की तरह नहीं बैठते हैं (यानी कोई कैमरा कैमरा स्थापित करता है और सबकुछ टूट जाता है) मुझे आश्चर्य है कि एक बैच फ़ाइल मदद कर सकती है, बस कोशिश की लेकिन आरएसएसक्रिप्ट अभी भी बाहर निकलने पर छोड़ दिया और ग्राफ विंडो बंद कर दिया। हालांकि विचारों के लिए धन्यवाद। – BetaScoo8

उत्तर

9

यह लिनक्स पर मेरे लिए काम करता साथ पूरी तरह से अपरिचित है एक सहयोगी के कंप्यूटर को यह तैनात करने के लिए है:

#!/usr/bin/env Rscript 

X11() 
with(mtcars, plot(mpg, hp)) 
locator(1) 

उपयोगकर्ता गायब होने से पहले प्लॉट विंडो पर क्लिक करना होगा। मुझे लगता है कि यह विंडोज़ पर windows() पर कॉल के साथ काम करेगा।

+0

स्क्रिप्ट वास्तव में विंडोज़() 4 बार कॉल करती है, लेकिन जब स्क्रिप्ट दुर्भाग्य से बाहर निकलती है तो वे सभी बंद हो जाते हैं। मैंने लोकेटर() का उपयोग करने की कोशिश की लेकिन मैं या तो अपने क्लिक के साथ पर्याप्त तेज़ नहीं हूं, या यह काम नहीं करता है। – BetaScoo8

+0

यह प्लॉट विंडो को _until_ उपयोगकर्ता क्लिक पर रखना है। क्षमा करें यह आपके लिए काम नहीं करता है। –

+0

आह ठीक है, जिस तरह से मैंने इसे भी लागू किया है। धन्यवाद – BetaScoo8

2

माइकल का समाधान पहले से ही काम कर सकता है, लेकिन यहां कुछ ऐसा है जो tkrplot फ्रेम के अंदर एक साजिश दिखा रहा है। tkrplot पैकेज (सीआरएएन पर) आर के लिए tcltk एक्सटेंशन का उपयोग करता है और हर जगह उपलब्ध है।

# From http://stackoverflow.com/questions/3063165/ 
#  r-building-a-simple-command-line-plotting-tool- 
#  capturing-window-close-events 

require(tcltk) 
library(tkrplot) 

## function to display plot, called by tkrplot and embedded in a window 
plotIt <- function(){ plot(x=1:10, y=1:10) } 
tt <- tktoplevel()  ## create top level window event handler 
done <- tclVar(0)  ## variable to wait on  
## bind to the window destroy event, set done variable when destroyed 
tkbind(tt,"<Destroy>",function() tclvalue(done) <- 1) 
## Have tkrplot embed the plot window, then realize it with tkgrid 
tkgrid(tkrplot(tt,plotIt)) 
tkwait.variable(done) ## wait until done is true 
## script continues, or exits, ... once plot is closed 

आप आर के लिए tcltk प्रलेखन के माध्यम से देखते हैं, तो आप 'ओके' बटन के साथ अन्य उदाहरण बंद करने के लिए लगता है आदि

2

कैसे के बारे में Sys.sleep (1e30)? वह काफी देर तक इंतजार करना चाहिए।

+0

हां, यह एक अच्छा त्वरित और गंदे समाधान है। अति उत्कृष्ट। – BetaScoo8

+0

उपयोगकर्ता को विंडो से छुटकारा पाना होगा या इससे बचने के लिए हिट एस्केप या ctrl-something को बंद करना होगा। – Spacedman

+0

इसे विंडोज में काम करने के लिए बस Sys.sleep (10000) का उपयोग करें, वास्तव में, 1e30 का कोई प्रभाव नहीं है (विंडोज 8 64 बिट्स) – pommedeterresautee

1

ठीक है, मैं इस तरह के प्रश्नों को देखे गए सभी उत्तरों के बारे में पूरी तरह से कुचलने वाला था क्योंकि उनमें से कोई भी विंडोज़ पर काम नहीं करता था। रीडलाइन, tkwait.window, Sys.sleep (1e30), जबकि (TRUE), इनमें से कोई भी काम नहीं किया।

लेकिन मैंने अभी आर को v3.1.0 अपडेट किया है और अब tkwait.window (yourmainwindow) काम करता है, जबकि (TRUE) {} काम करता है, हालांकि Sys.sleep (1e30) अभी भी काम नहीं करता है।

कोई बात नहीं ... मैं tkwait.window का उपयोग कर रहा हूं, क्योंकि यह टीके है, और मेरी खिड़की के लिए इंतजार कर रहा है (जो मैं चाहता हूं)।

उदा। http://www.sciviews.org/_rgui/tcltk/OKtoplevel.html से काम करने के लिए ... (संक्षिप्तता के लिए निकाली गई टिप्पणियां)

require(tcltk) 
tt <- tktoplevel() 
OK.but <- tkbutton(tt, text = "OK", command = function() tkdestroy(tt)) 
tkgrid(OK.but) 
tkfocus(tt) 
tkwait.window(tt) # <-- added this to make the window stay! 
संबंधित मुद्दे