2012-06-13 15 views
8

प्लॉटिंग और सहेजना मेरे पास एक बैश स्क्रिप्ट है जो कमांड चलाने के साथ समय के साथ मेमोरी उपयोग ट्रैक करती है। यह वांछित कमांड को जन्म देता है और फिर कॉलम 1 = "प्रोग्राम (गीग्स) द्वारा उपयोग में स्मृति" के साथ एक लॉग लिखता है और कॉलम 2 सेकंड में अब तक का समय बीत चुका है। जैसेआर ग्राफ

31.282 1470 
31.565 1480 
31.848 1490 
31.989 1500 
32.273 1510 
32.414 1520 
32.697 1530 
32.980 1540 
33.122 1550 
33.405 1560 
6.511 1570 
6.935 1580 
7.502 1590 
7.926 1600 
8.351 1610 
8.775 1620 
9.059 1630 
9.483 1640 
9.908 1650 
10.333 1660 

मुझे क्या करना चाहते हैं जब तक प्रतीक्षा करें प्रक्रिया के पूरा होने और फिर समय के साथ स्मृति के उपयोग की एक लेखाचित्र और वर्तमान निर्देशिका में सहेजने के लिए आर का उपयोग करें। मैं आर के साथ चारों ओर खेल रहा था और मुझे पता है कि वास्तव में क्या आज्ञा देता है मैं उपयोग करने की आवश्यकता:

> heisenberg <- read.csv(file="4644.log",head=FALSE,sep=" ") 
> plot(heisenberg$V2,heisenberg$V1,type="o",col="red",main="Memory Usage Over Time",xlab="Time (seconds)",ylab="Memory (gigabytes)") 
> text(max(heisenberg$V2),max(heisenberg$V1),max(heisenberg$V1)) #Displays max value 

लेकिन भाग मैं पर अटक कर रहा हूँ एक JPG या PNG के रूप में ग्राफ की बचत है। या मैं इस बैकअप स्क्रिप्ट के भीतर इस आदेश को कैसे निष्पादित कर सकता हूं। क्या मुझे पूरी तरह से आर भाषा में लिखी गई एक और स्क्रिप्ट चाहिए और इसे चलाने की ज़रूरत है? क्या यह सब एक में करना संभव होगा?


संपादित

यहाँ मेरी script.r के लिए कोड है

png("mem_usage_2965.png",height=800,width=800) 
heisenberg <- read.csv(file="2965.log",head=FALSE,sep=" ") 
plot(heisenberg$V2,heisenberg$V1,type="o",col="red",main="oases_k85",xlab="Time (seconds)",ylab="Memory (gigabytes)") 
text(max(heisenberg),max(heisenberg),max(heisenberg)) 
dev.off() 

किसी को क्यों पाठ outputted png में अधिकतम मूल्य प्रिंट नहीं करता के रूप में मदद कर सकते हैं? मैं इसे R CMD BATCH script.r script.out

+0

आप 'heisenberg $ V1' और' Heisenberg $ V2' के 'अधिकतम()' की गणना क्यों नहीं कर रहे हैं? फिलहाल आप एक मान की गणना कर रहे हैं जो 'हेइजेनबर्ग 'डेटा फ्रेम में ** ** समन्वय (एक्स और वाई) दोनों के लिए सबसे बड़ा मूल्य है, इसलिए कोई आश्चर्य नहीं कि यह साजिश पर दिखाई नहीं देता है; यह साजिश के बाहर है।मुझे लगता है कि आप चाहते हैं: 'साथ (हेइजेनबर्ग, टेक्स्ट (अधिकतम (वी 2), अधिकतम (वी 1), अधिकतम (वी 1))) कम से कम यही आपके द्वारा दिखाए गए मूल कोड स्निपेट द्वारा सुझाया गया है। आपको पता है कि नया कोड मूल हां से मेल नहीं खाता है? –

+0

अधिक बारीकी से देखने पर, हाँ मुझे अब अंतर का एहसास है। Thats क्योंकि मैंने बस स्क्रिप्ट खोला था। कि बैश स्क्रिप्ट आउटपुट, लेकिन मैं $ से बचने के लिए भूल गया था। इस प्रकार उन्हें शून्य चर के रूप में व्याख्या किया गया था। जैसा कि आपने कहा था, मैं कथन के साथ कोशिश करूंगा। स्पष्ट होने के लिए, मैं क्या चाहता हूं कि ग्राफ पर अधिकतम प्रदर्शन को टेक्स्ट डिस्प्ले के साथ दिखाया जाए। –

उत्तर

12

अपने भूखंड लपेटें कॉल में: अन्य तर्कों की जानकारी के लिए ?png:

jpeg("myplot.jpg") 
....plot code here.... 
dev.off() 

या

png("myplot.png") 
....plot code here.... 
dev.off() 

उनके संबंधित सहायता पृष्ठ देखें।

एक PNG के लिए यह होगा:

png("my_plot.png", height = 800, width = 600) 
plot(heisenberg$V2,heisenberg$V1,type="o",col="red",main="Memory Usage Over Time",xlab="Time (seconds)",ylab="Memory (gigabytes)") 
text(max(heisenberg$V2),max(heisenberg$V1),max(heisenberg$V1)) #Displays max value 
dev.off() 

एक bash स्क्रिप्ट में इस चलाने के लिए के रूप में, आप आर आह्वान करने के लिए डेटा लोड और भूखंडों आकर्षित करने के लिए आर कोड युक्त अपनी स्क्रिप्ट चलाने की जरूरत है। इस के लिए वहाँ कई विकल्प हैं, दो हैं:

R CMD BATCH --no-save --no-restore my_script.R 

या का उपयोग Rscript

Rscript my_script.R 

जहां my_script.R एक पाठ वाक्य रचना-मान्य आर भूखंडों का उत्पादन करने के लिए आवश्यक कोड युक्त फ़ाइल है।

+0

तो क्या मेरी बैश स्क्रिप्ट के भीतर ऐसा करने का कोई तरीका है? क्या कमांड लाइन में आर का उपयोग करना संभव है? –

+1

स्रोत ("file.r") - यह आर कमांड की एक फ़ाइल निष्पादित करेगा। – LanceH

+0

आर के लिए एक स्क्रिप्टिंग इंटरफ़ेस के विवरण के लिए '? आरस्क्रिप्ट' देखें। अन्य तरीकों से, यानी 'आर सीएमडी बैच' का उपयोग कर रहे हैं। लेकिन यह एक और सवाल है इसलिए आपको उस विषय पर एक और प्रश्न पूछना चाहिए। –

2

जैसी बैश स्क्रिप्ट में कॉल कर रहा हूं क्या आप बस सरल दिख रहे हैं? http://stat.ethz.ch/R-manual/R-devel/library/grDevices/html/png.html

आप मूल रूप से आर बता के साथ एक .png बचत शुरू करने के लिए:

png(file="blah.png") 

तो का उपयोग करें:

dev.off() 

सामान्य करने के लिए वापस जाने के लिए।