2011-11-16 15 views
5

इस सरल टुकड़ा पर विचार करें:कैसे ग्रिड से आरजीबी रंग प्रदान करना matplotlib साथ जाल

import numpy as np 

x = np.arange(3) 
y = np.arange(2) 

X, Y = np.meshgrid(x,y) 

मैं हर ग्रिड सेल करने के लिए पहले से ही तैयार रंग प्रदान करना चाहते हैं। मैं सामान्यीकृत आरजीबी मूल्यों के रूप में हर आरजीबी चैनल के लिए XY ग्रिड के रूप में ही आकार का रंग मान हैं - तो यह 3 numpy 0 1 नाव के प्रत्येक मिलकर सरणियों, चैनल मूल्य का प्रतिनिधित्व

मैं पहली बार matplotlib.pyplot.pcolor साथ की कोशिश की के रूप में यह सही तरह लगता है मैं जो चाहता हूं उसके लिए टूल, लेकिन मुझे समझ में नहीं आता कि रंग मैपिंग कैसे किया जाता है।

ऐसा लगता है कि रंग सरणी (प्रलेखन में सी) को डिफ़ॉल्ट रूप से मैप किया गया है (या मैन्युअल रूप से असाइन किया गया है), लेकिन मुझे इस रंग सरणी में मूल्यों का तर्क नहीं मिल रहा है और इसकी भूमिका है।
यदि मान ग्रिड सेल मान से डिफॉल्ट (या असाइन किए गए) कोलोमाप पर मैप किए जाते हैं, तो सी रंग सरणी का उद्देश्य क्या है?
मैंने उपरोक्त उदाहरण (2x1 numpy सरणी) के लिए हाथ से यह सी सरणी बनाई है, लेकिन इसके बावजूद मुझे समान रंग मिलते हैं जो केवल ग्रिड सेल मान पर निर्भर करते हैं और इस सी सरणी में मान नहीं हैं।

तो मैं यहाँ उलझन में हूँ और तरह मदद, जो जरूरी इस pcolor समारोह की व्याख्या करने की आवश्यकता नहीं है के लिए पूछना, लेकिन शायद matplotlib साथ जाल ग्रिड के लिए रंग प्रदान करना सही तरीके क्या है

उत्तर

4

आप imshowpcolor के बजाय चाहते हैं। (हालांकि आप pcolor या pcolormesh इस के लिए उपयोग कर सकते हैं।)

import numpy as np 
import matplotlib.pyplot as plt 

# Make some random data to represent your r, g, b bands. 
ny, nx = 2, 3 
r, g, b = [np.random.random(ny*nx).reshape((ny, nx)) for _ in range(3)] 

c = np.dstack([r,g,b]) 

plt.imshow(c, interpolation='nearest') 
plt.show() 

enter image description here

+1

धन्यवाद। वास्तविक जाल का हिस्सा: http://i.imgur.com/ZBWAs.jpg – theta

+2

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

+0

इंटरपोलेशन टिप के लिए फिर से धन्यवाद, छवि matplotlib के साथ ज़ूम किया गया है और 1: 1 पर यह निश्चित रूप से सुंदरता है। और आप सही हैं - मुझे आश्चर्य है कि आपने इसे केवल छवि के हिस्से के द्वारा लगाया है :) चीयर्स – theta

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