2012-08-26 20 views
5

का उपयोग कर आर (Win64) में rasters, मैं एक मैट्रिक्स लेआउट को परिभाषित करने के साथ लेआउट() आदेश का उपयोग कर एक ही प्लॉट विंडो में रेखापुंज छवियों और हिस्टोग्राम का एक संयोजन प्लॉट करने के लिए कोशिश कर रहा हूँ। यहाँ सरलीकृत डेटा के साथ कुछ नमूना कोड:आर - की साजिश रचने कई मैट्रिक्स लेआउट

library(raster) 

r <- raster(ncols=5, nrows=5, xmn=1, xmx=5, ymn=1, ymx=5) 
rast1 <- rasterize(expand.grid(1:5,1:5), r, rnorm(25)) 
rast2 <- rasterize(expand.grid(1:5,1:5), r, rnorm(25)) 
rast3 <- rasterize(expand.grid(1:5,1:5), r, rnorm(25)) 

layout(matrix(c(1,2,3,4,1,2,3,5,1,2,3,6), 3, 4, byrow=T)) 
layout.show(6) 

plot(rast1, axes=F, ann=F, legend=F, box=F, useRaster=T) 
plot(rast2, axes=F, ann=F, legend=F, box=F, useRaster=T) 
plot(rast3, axes=F, ann=F, legend=F, box=F, useRaster=T) 
hist(rnorm(100), ann=F, axes=F) 
hist(rnorm(100), ann=F, axes=F) 
hist(rnorm(100), ann=F, axes=F) 

आप देख सकते हैं, मैं तीन रेखापुंज छवियों (rast1, rast2, rast3) है कि 1 स्तंभ और 3 पंक्तियों प्रत्येक अवधि, प्लॉट करने के लिए उनके पास 3 हिस्टोग्राम के साथ कोशिश कर रहा हूँ , जिनमें से प्रत्येक 1 कॉलम और 1 पंक्ति फैलता है। Layout.show() कमांड विचार देता है।

जब मैं यह कोड चलाता हूं, ऐसा लगता है कि पहली साजिश (रास्टर) कमांड प्लॉट विंडो के लेआउट को रीसेट करता है, जिससे सभी बाद के प्लॉट मानक 3x4 ग्रिड में प्लॉट करने के लिए होते हैं (5 वीं साजिश के साथ अब पहले ओवरलैपिंग) । लेआउट सेटअप ध्वनि लगता है, क्योंकि मैं उचित लेआउट में छह हिस्टोग्राम प्लॉट कर सकता हूं। लेकिन रास्टर प्लॉट गड़बड़ चीजें ऊपर।

मुझे लगता है वहाँ {रेखापुंज} कि लेआउट() आदेश के साथ खिलवाड़ कर रहा है में भूखंड() आदेश के बारे में कुछ है, लेकिन मुझे पता नहीं क्यों या कैसे की है। क्या इस लेआउट को हासिल करने का कोई और तरीका है? एक और रास्टर आधारित कमांड? क्या रास्टर प्लॉट्स के बीच लेआउट रीसेट करने का कोई तरीका है?

अग्रिम धन्यवाद।

+0

'plot' समारोह वास्तव में काम करता है कि यह करने के लिए पहला तर्क के वर्ग के आधार पर भेजा जाएगा की एक किस्म है। आपको उस वस्तु के वर्ग के लिए विशेष फ़ंक्शन को देखने की आवश्यकता है जिसे आप पास कर रहे हैं। (शायद 'plot.raster') –

उत्तर

4

एस 4 विधियों और लेआउट() के बीच कोई समस्या हो सकती है। कामकाज के रूप में, यह छवि() के साथ साजिश() को प्रतिस्थापित करने के लिए काम करता है। साजिश के बजाय (rast1, axes = f, ann = f, legend = f, box = F, useRaster = T), स्क्वायर छवि मानचित्र प्राप्त करने के लिए छवि (rast1, axes = f, ann = f, asp = 1) का उपयोग करें।

+0

शानदार! एक जादू की तरह काम करता है। धन्यवाद डकारसन! –

+0

आप राक्षस के लिए साजिश के बजाय छवि का उपयोग करने वाले पौराणिक कथा को वापस कैसे प्राप्त करते हैं – jjunju

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