2012-01-11 14 views
8

का उपयोग करके कई चार्ट सभी 6 चार्ट के 6 दिनों के इंट्रैड डेटा को प्लॉट करने का प्रयास कर रहे हैं। क्वांटमोड का प्रयोगात्मक chart_Series() फ़ंक्शन बराबर() सेटिंग्स के साथ काम करता है।आर/क्वांटमोड: एक ही वाई-अक्ष

par(mfrow=c(3,2)) #3 rows, 2 columns 

for(d in bars){ 
    print(chart_Series(d, type = "candlesticks")) 
    } 

यह काम करता है, लेकिन प्रत्येक चार्ट का अपना अलग y- अक्ष पैमाने है: मैं bars (XTS वस्तुओं की एक वेक्टर) तो मेरे कोड इस तरह दिखता में डेटा प्री-लोडेड है। मैं एक वाई-रेंज सेट करना चाहता था जिसमें सभी 6 दिन शामिल हों, लेकिन ऐसा करने का कोई तरीका नहीं मिल सका। मैंने यह कोशिश की:

ylim=c(18000,20000) 
print(chart_Series(d, type = "candlesticks",ylim=ylim)) 

लेकिन यह "अप्रयुक्त तर्क (त्रुटि)" त्रुटि के साथ विफल रहता है। yrange = ylim भी विफल रहता है।

मैं चार्टसरीज (डी, yrange = ylim) का उपयोग कर सकता हूं, और यह काम करता है। लेकिन जहां तक ​​मुझे पता है कि मैं एक प्रदर्शन (?) में एकाधिक चार्ट नहीं डाल सकता। (यह सख्ती से ऑफ-विषय हो सकता है, लेकिन वैकल्पिक आर पैकेजों के लिए सुझाव जो अच्छे दिखने वाले कैंडलस्टिक चार्ट खींच सकते हैं, वाई-अक्ष नियंत्रण को अनुमति दे सकते हैं और एक छवि पर कई चार्ट आकर्षित कर सकते हैं।)

उत्तर

8

के साथ chartSeries, layout() कमांड को कॉल करने से रोकने के लिए NULL पर layout तर्क सेट कर सकते हैं: यह mfrow सेटिंग को अक्षम करता है।

library(quantmod) 
getSymbols("AA") 

op <- par(mfrow=c(3,2)) 
for(i in 1:6) { 
    chartSeries(
    AA["2011-01"], "candlesticks", 
    TA=NULL, # No volume plot 
    layout=NULL, 
    yrange=c(15,18) 
) 
} 
par(op) 

आप मात्रा को बनाए रखना चाहते हैं, तो आप के बजाय mfrow स्थापित करने की layout कॉल कर सकते हैं: यह मूल रूप से एक ही बात करता है, लेकिन आप विभिन्न आकार के भूखंडों है और वे किस क्रम में साजिश रची है चुनने के लिए अनुमति देता है।

layout(matrix(c(
    1, 3, 
    2, 4, 
    5, 7, 
    6, 8, 
    9, 11, 
    10, 12 
), nc=2, byrow=TRUE), 
    heights = rep(c(2,1), 3) 
) 
#layout.show(12) # To check that the order is as desired 
for(i in 1:6) { 
    chartSeries( 
    AA[sprintf("2011-%02d",i)], 
    "candlesticks", layout=NULL, yrange=c(15,19) 
) 
} 
+0

धन्यवाद विन्सेन्ट, कि काम करता है! वॉल्यूम सब-चार्ट वापस लाने के लिए लेआउट का उपयोग करने के तरीके पर कोई सुझाव/लिंक/आलेख? –

+1

मैंने 'लेआउट' के साथ एक उदाहरण जोड़ा है (आपका उत्तर देखने से पहले ...) –

1

विन्सेंट के जवाब को समझने के लिए गुगल ने मुझे लेआउट() कमांड का नेतृत्व किया। यह par (mfrow) के साथ असंगत लगता है, लेकिन कुछ और प्रयोगों को पाया गया है कि इसे वैकल्पिक के रूप में उपयोग किया जा सकता है।

ylim=c(18000,20000) 
layout(matrix(1:12,nrow=6,ncol=2), height=c(4,2,4,2,4,2)) 
for(d in bars){ 
    chartSeries(d,layout=NULL,TA=c(addVo(),addBBands()),yrange=ylim) 
    } 

(आप मैं बोलिंगर बैंड भी जोड़ा ध्यान देंगे, तो सुनिश्चित करें ओवरले अभी भी बहुत काम किया जाना है।)