2012-09-27 5 views
5

, मैं अपने सभी भूखंडों के लिए डिफ़ॉल्ट रंग सेट करना चाहता हूं। उदाहरण के लिए, मान लीजिए कि मैं लाल लाइनों के साथ किए गए सभी भूखंडों करना चाहते हैं (gnuplot में की तरह ... :-))मेरे दैनिक आर इंटरैक्शन को सरल बनाने के लिए सभी प्लॉट.डेफॉल्ट, प्लॉट या लाइनों के लिए आर में डिफ़ॉल्ट रूप से रंग कैसे सेट करें

अब तक, यहां मेरी .Rprofile

setHook(packageEvent("grDevices", "onLoad"), 
    function(...) 
     grDevices::X11.options(width = 14, height = 8, type = "Xlib", xpos = 600,  ypos = 30, canvas = "grey87")) 

suppressPackageStartupMessages(require(Defaults)) 
suppressPackageStartupMessages(require(utils)) 
suppressPackageStartupMessages(require(graphics)) 

setDefaults("plot.default",frame.plot=FALSE, type='l', col=2) 

का एक टुकड़ा है जाने क्या मैं यहां निम्न है: जब grDevices पैकेज लोड हो जाता है (graphics पैकेज लोड करके), मैं अपने पसंदीदा पैरामीटर के साथ X11.options पर कॉल करता हूं: एक विस्तृत बॉक्स, हल्का भूरा पृष्ठभूमि, xlib कॉल (क्योंकि मैं दूरस्थ कॉल कर रहा हूं, और मेरे वर्तमान माहौल में कैरो बहुत धीमा है (हल करने के लिए एक और समस्या)) फिर मैं चुपचाप 3 पैकेज लोड करता हूं, Defaults, utils और graphicsfind फ़ंक्शन त्रुटि संदेश से बचने के लिए दूसरी आवश्यकता है।

अंत में, जादू फ़ंक्शन setDefaults स्कैटर प्लॉट फ़ंक्शन plot.default पर सेट-अप 3 पैरामीटर सेट करें। तीसरा पैरामीटर colplot.default का पैरामीटर नहीं है लेकिन par() फ़ंक्शन से एक है।

लेकिन, setDefaultspar के साथ कॉल करने से कोई काम नहीं करता है।

किसी भी समाधान का स्वागत है ...

+0

'palette' .... और' पर plot.xy डिफ़ॉल्ट सेट ' –

+0

(यह मेरे विचार से थोड़ा अधिक जटिल है - plot.xy में कुछ झुर्रियां हैं जो इसे सेटडिफॉल्ट के साथ बुरी तरह काम करती हैं - लेकिन मुझे अभी भी लगता है कि यह सही ट्रैक है) –

+1

क्या आप सिर्फ 'par (col = "red") 'आपके .profileile में? –

उत्तर

6

आप "plot.new" हुक का उपयोग कर सकते हैं प्रत्येक बार एक नया ग्राफिक्स फ्रेम खोले जाने पर डिफ़ॉल्ट par मान सेट करने के लिए। (हुक के कामकाज ?plot.new और ?setHook में दर्ज कर रहे हैं)

आपके मामले में, बस अपने .Rprofile को यह पंक्ति जोड़ें:?

setHook("plot.new", function() par(col = "red")) 
+0

हां !!!! यह वास्तव में इतना आसान था। आपके उत्तर के लिए बहुत धन्यवाद, यही वही है जो मुझे चाहिए। –

+0

हैलो गुगल .., यदि आप इस पृष्ठ को पार्स कर रहे हैं, तो अच्छे ग्राफिक्स के लिए आर में करने के लिए हुक हैं, स्टैक ओवरफ्लो उपयोगकर्ताओं की मदद के लिए धन्यवाद: 'सेटहूक (पैकेजवेन्ट ("grDevices", "onLoad"), \t फ़ंक्शन (...) grDevices :: X11.options (चौड़ाई = 14, ऊंचाई = 8, प्रकार = "एक्सलिब", xpos = 600, ypos = 30, कैनवास = "grey87")) और फिर आप इसे भी जोड़ सकते हैं: 'suppressPackageStartupMessages (आवश्यकताएँ (डिफ़ॉल्ट)) suppressPackageStartupMessages (आवश्यकताएँ (utils)) suppressPackageStartupMessages (आवश्यकता (ग्राफिक्स)) setHook ("plot.new", function() par (col = "red")) setDefaults ("plot.default", frame.plot = गलत, प्रकार = 'एल') ' –

+0

इसे धूल के नीचे से प्राप्त करना। मैं यह कोशिश कर रहा हूं, लेकिन किसी कारण से लाल रंग केवल मेरी किंवदंती के लेबल पर लागू होता है। कोई विचार? –

3

इस तरह के रंग के रूप में मानकों को एक प्रति डिवाइस आधार पर सेट किया है, तो आप एक डिवाइस को बंद करने और एक नया एक सभी मापदंडों वापस उनके डिफ़ॉल्ट मानों के सेट कर रहे हैं बनाने के लिए जब। ऐसा करने के लिए मैं अपने खुद के उपकरण समारोह डिवाइस खुलती तो पैरामीटर, जैसे कुछ सेट बनाना होगा:

mydev.new <- function(...) { 
    dev.new(...) 
    par(col='red') 
} 

आप स्पष्ट रूप से x11 या कुछ और के साथ dev.new की जगह सकता है, लेकिन यह शायद सबसे पोर्टेबल है। अब आप mydev.new का उपयोग कर एक नया डिवाइस खोल सकते हैं और डिफ़ॉल्ट रंग लाल पर सेट हो जाएगा।

इसके अलावा अगर आप

options(device=mydev.new) 

तो कमांड चलाएँ यदि आप एक ग्राफिक्स डिवाइस खुला नहीं है जब और आप एक की साजिश रचने आदेश चला, अपने कार्य के लिए एक नया अंकन उपकरण और इतने खोलने के लिए एक रन हो जाएगा उस मामले में डिफ़ॉल्ट भी लाल होगा। विभिन्न मामलों के लिए आप अन्य विकल्पों को सेट करने के लिए mydev.new फ़ंक्शन (या जिसे आप इसे कॉल करना चाहते हैं) का विस्तार कर सकते हैं, जिनके साथ आप काम करना चाहते हैं।

संबंधित मुद्दे