Domanda

Voglio fissare la gamma di colori su più grafici a dispersione e aggiungere in una barra colorata per ogni appezzamento (che sarà lo stesso in ogni figura). In sostanza, sto riparando tutti gli aspetti degli assi e spazio colore, ecc in modo che le trame sono direttamente paragonabili ad occhio.

Per la vita di me, non posso sembrare calcolare fuori tutti i vari modi di fissare il colore-gamma. Ho provato Vmin, Vmax, ma non sembra di fare nulla, ho anche provato clim (x, y) e che non sembra funzionare.

Questo deve venire qua e là, non posso essere l'unico che vuole confrontare i vari sottoinsiemi di dati tra i complotti ... sì, come si fa a risolvere i colori in modo che ogni dati mantiene il suo colore tra trame e non ottiene rimappata ad un colore diverso a causa del cambiamento di max / min del sottoinsieme -V- l'intera serie?

È stato utile?

Soluzione

Impostazione Vmin e Vmax dovrebbe fare questo.

Ecco un esempio:

import matplotlib.pyplot as plt

xyc = range(20)

plt.subplot(121)
plt.scatter(xyc[:13], xyc[:13], c=xyc[:13], s=35, vmin=0, vmax=20)
plt.colorbar()
plt.xlim(0, 20)
plt.ylim(0, 20)

plt.subplot(122)
plt.scatter(xyc[8:20], xyc[8:20], c=xyc[8:20], s=35, vmin=0, vmax=20)   
plt.colorbar()
plt.xlim(0, 20)
plt.ylim(0, 20)

plt.show()

E la trama questo produce:

alt text

Altri suggerimenti

Ok, questo non è davvero una risposta, ma un follow-up. I risultati della mia codifica alterando il codice di Tom sopra. [Non sono sicuro che voglio rimuovere il segno di spunta risposta, come il codice precedente funziona, ed è una risposta alla domanda!]

E non sembra lavorare per i miei dati !! Di seguito è riportato il codice modificato che può essere utilizzato con i miei dati per produrre una trama che non funzionava per me per qualche strana ragione. L'input è venuto attraverso le funzioni h5py (HDF5 file di dati di importazione).

In seguito, rf85 è un sottoinsieme degli array per la grande serie di esperimenti in cui la potenza RF applicata al sistema è stato di circa 85 watt in avanti. Sono fondamentalmente affettare e sminuzzare i dati in vari modi per cercare di vedere una tendenza. Questo è il 85 watt rispetto all'intero dataset, che è corrente di ingresso (non c'è più dati, ma questo è quello che ho per ora).

import numpy
import matplotlib.pyplot as plt

CurrentsArray = [array([ 0.83333333,  0.8       ,  0.57142857,  0.83333333,  1.03333333,
        0.25      ,  0.81666667,  0.35714286,  0.26      ,  0.57142857,
        0.83333333,  0.47368421,  0.80645161,  0.47368421,  0.52631579,
        0.36666667,  0.47368421,  0.57142857,  0.47368421,  0.47368421,
        0.47368421,  0.47368421,  0.47368421,  0.61764706,  0.81081081,
        0.41666667,  0.47368421,  0.47368421,  0.45      ,  0.73333333,
        0.8       ,  0.8       ,  0.8       ,  0.47368421,  0.45      ,
        0.47368421,  0.83333333,  0.47368421,  0.22222222,  0.32894737,
        0.57142857,  0.83333333,  0.83333333,  1.        ,  1.        ,
        0.46666667])]

growthTarray = [array([ 705.,  620.,  705.,  725.,  712.,  705.,  680.,  680.,  620.,
        660.,  660.,  740.,  721.,  730.,  720.,  720.,  730.,  705.,
        690.,  705.,  680.,  715.,  705.,  670.,  705.,  705.,  650.,
        725.,  725.,  650.,  650.,  650.,  714.,  740.,  710.,  717.,
        737.,  740.,  660.,  705.,  725.,  650.,  710.,  703.,  700.,  650.])]

CuSearray = [array([ 0.46395015,  0.30287259,  0.43496888,  0.46931773,  0.47685844,
        0.44894925,  0.50727844,  0.45076198,  0.44977095,  0.41455029,
        0.38089693,  0.98174953,  0.48600461,  0.65466528,  0.40563053,
        0.22990327,  0.54372179,  0.43143358,  0.92515847,  0.73701742,
        0.64152173,  0.52708783,  0.51794063,  0.49      ,  0.48878252,
        0.45119732,  0.2190089 ,  0.43470776,  0.43509758,  0.52697697,
        0.21576805,  0.32913721,  0.48828072,  0.62201997,  0.71442359,
        0.55454867,  0.50981136,  0.48212956,  0.46      ,  0.45732419,
        0.43402525,  0.40290777,  0.38594786,  0.36777306,  0.36517926,
        0.29880924])]

PFarray = [array([ 384.,  285.,  280.,  274.,  185.,  185.,  184.,  184.,  184.,
        184.,  184.,  181.,  110.,  100.,  100.,  100.,   85.,   85.,
         84.,   84.,   84.,   84.,   84.,   84.,   84.,   84.,   84.,
         84.,   84.,   84.,   84.,   84.,   27.,   20.,    5.,    5.,
          1.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.])]

rf85growthTarray = [array([ 730.,  705.,  690.,  705.,  680.,  715.,  705.,  670.,  705.,
        705.,  650.,  725.,  725.,  650.,  650.,  650.])]

rf85CuSearray = [array([ 0.54372179,  0.43143358,  0.92515847,  0.73701742,  0.64152173,
        0.52708783,  0.51794063,  0.49      ,  0.48878252,  0.45119732,
        0.2190089 ,  0.43470776,  0.43509758,  0.52697697,  0.21576805,
        0.32913721])]

rf85PFarray = [array([ 85.,  85.,  84.,  84.,  84.,  84.,  84.,  84.,  84.,  84.,  84.,
        84.,  84.,  84.,  84.,  84.])]

rf85CurrentsArray = [array([ 0.54372179,  0.43143358,  0.92515847,  0.73701742,  0.64152173,
        0.52708783,  0.51794063,  0.49      ,  0.48878252,  0.45119732,
        0.2190089 ,  0.43470776,  0.43509758,  0.52697697,  0.21576805,
        0.32913721])]

Datavmax = max(max(CurrentsArray))
Datavmin = min(min(CurrentsArray))

plt.subplot(121)
plt.scatter(growthTarray, CuSearray, PFarray, CurrentsArray, vmin=Datavmin, vmax=Datavmax, alpha=0.75)
plt.colorbar()
plt.xlim(600,760)
plt.ylim(0,2.5)

plt.subplot(122)
plt.scatter(rf85growthTarray, rf85CuSearray, rf85PFarray, rf85CurrentsArray, vmin=Datavmin, vmax=Datavmax, alpha=0.75)
plt.colorbar()
plt.xlim(600,760)
plt.ylim(0,2.5)

plt.show()

E, infine, l'uscita:

colorfailed!

Si prega di notare che questo non è l'output perfetto per il mio lavoro, ma non ho spendere sforzo ed è perfetto. Ciò che è importante però: datapoints che si riconosce come lo stesso tra le trame non contengono lo stesso colore , come dovrebbe essere il caso basato sull'uso Vmin vmax sopra (come suggerisce il codice di Tom)

Questo è folle. :( Mi auguro che qualcuno possa far luce su questo per me! Io sono positivo il mio codice che non è grande, quindi per favore non preoccuparti di offendere in alcun modo quando si tratta di mio codice !!

borsa extra di cheetos firey-hot a chiunque possa suggerire una via d'uscita. -Allen

Update-Tom10 catturato il problema - avevo inavvertitamente utilizzato i dati sbagliati per uno dei miei sub-array, causando i valori per dare diversi livelli di colore del previsto ( vale a dire, i miei dati era sbagliato!) Big puntelli a Tom per questo- gli auguro che potrei dare un altro up-voto, ma a causa di mio metodo di porre questa domanda, non posso (scusate Tom!)

Si veda anche il suo meraviglioso esempio di tracciare il testo nelle posizioni di dati menzionato di seguito.

Ecco un'immagine aggiornata che mostra che il metodo di Tom fa davvero il lavoro, e che il tracciato è stato un problema nel mio codice: alt text

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top