2015-09-24 26 views
6

Sto provando a tracciare i campi con la stessa scala. I valori di immagine superiori sono 10 volte più alti di quelli di un muggito, ma risultano essere dello stesso colore nell'immagine. Come posso impostare entrambi per avere le stesse scale nei colori?Impostare due grafici implog matplotlib per avere la stessa scala della scala dei colori

ho aggiunto il codice che sto usando qui sotto l'immagine ..

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

Stai cercando gli argomenti 'vmin' e' vmax'. (Nota a margine, questa è una domanda doppia, anche se al momento non riesco a trovare la versione canonica ...) –

+0

Sì, non ho trovato questa domanda, anche se ero sicuro che fosse stata sollevata molte volte ... – Ohm

+0

Sono abbastanza sicuro che ci sia un duplicato più esatto della domanda che ho contrassegnato come duplicato di ... Se tu o chiunque altro ci si imbatte in esso, sentitevi liberi di cambiarlo! –

risposta

5

Prima di tutto bisogna definire il minimo e massimo della gamma di colore che si desidera utilizzare. In questo esempio è il minimo e il massimo di entrambi gli array che stai progettando. Quindi utilizza questi valori per impostare l'intervallo del codice colore 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()