2015-09-24 12 views
6

同じ縮尺のフィールドにプロットしようとしています。上の画像の値は、下の画像の値の10倍ですが、imshowでは同じ色になります。どのようにして色のスケールが同じになるように設定することができますか?2つのmatplotlibのimshowプロットを同じカラーマップスケールに設定します。

私は画像怒鳴る使用していたコードを追加しました。..

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

あなたが使用する色の範囲の最小値と最大値を定義する必要がありまず。この例では、プロットしている両方の配列の最小値と最大値です。次に、これらの値を使用して、imshowカラーコードの範囲を設定します。

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() 
関連する問題