2015-09-24 9 views
6

मैं उसी पैमाने के साथ फ़ील्ड में साजिश करने की कोशिश कर रहा हूं। ऊपरी छवि मान एक बोले से 10 गुना अधिक होते हैं, लेकिन वे imshow में एक ही रंग के रूप में बाहर निकलते हैं। मैं दोनों रंगों में समान तराजू रखने के लिए कैसे सेट कर सकता हूं?दो matplotlib imshow प्लॉट को एक ही रंग मैप स्केल रखने के लिए सेट करें

मैं कोड मैं छवि bellow उपयोग कर रहा हूँ ..

Two imshow plots

def show_field(field1,field2): 
    fig = plt.figure() 
    ax = fig.add_subplot(2, 1, 1) 
    ax.imshow(field1,cmap=plt.cm.YlGn) 
    ax.set_adjustable('box-forced') 
    ax.autoscale(False) 
    ax2 = fig.add_subplot(2, 1, 2) 
    ax2.set_adjustable('box-forced') 
    ax2.imshow(field2,cmap=plt.cm.YlGn) 
    ax2.autoscale(False) 
    plt.show() 
+2

आप 'vmin' और' vmax' तर्कों की तलाश में हैं। (साइड नोट, यह एक डुप्लिकेट सवाल है, हालांकि मुझे इस समय कैनोलिक संस्करण नहीं मिल रहा है ...) –

+0

हां मुझे यह प्रश्न भी नहीं मिला है, हालांकि मुझे यकीन था कि इसे कई बार उठाया गया था ... – Ohm

+0

मुझे पूरा यकीन है कि मैंने इसे एक प्रश्न के मुकाबले एक अधिक सटीक डुप्लिकेट किया है जिसे मैंने इसे डुप्लिकेट के रूप में फ़्लैग किया है ... यदि आप या कोई अन्य इसे पार करता है, तो इसे बदलने में संकोच न करें! –

उत्तर

5

पहले तुम मिनट और रंग श्रेणी का उपयोग करना चाहते की अधिकतम परिभाषित करने की जरूरत गयी। इस उदाहरण में यह उन दोनों सरणीओं का न्यूनतम और अधिकतम है जो आप साजिश कर रहे हैं। फिर इम्शो रंग कोड की सीमा निर्धारित करने के लिए इन मानों का उपयोग करें।

import numpy as np  
def show_field(field1,field2): 

    combined_data = np.array([field1,field2]) 
    #Get the min and max of all your data 
    _min, _max = np.amin(combined_data), np.amax(combined_data) 

    fig = plt.figure() 
    ax = fig.add_subplot(2, 1, 1) 
    #Add the vmin and vmax arguments to set the color scale 
    ax.imshow(field1,cmap=plt.cm.YlGn, vmin = _min, vmax = _max) 
    ax.set_adjustable('box-forced') 
    ax.autoscale(False) 
    ax2 = fig.add_subplot(2, 1, 2) 
    ax2.set_adjustable('box-forced') 
    #Add the vmin and vmax arguments to set the color scale 
    ax2.imshow(field2,cmap=plt.cm.YlGn, vmin = _min, vmax = _max) 
    ax2.autoscale(False) 
    plt.show() 
संबंधित मुद्दे