Domanda

Sto cercando di creare una trama di contorno compilato matplotlib (Win7, 1.1.0). Voglio sottolineare certi valori, ei livelli sono più vicini al log che lineare.

Ci sono numerose mappe di colori che mi sarebbe adatto, ma la mia scelta di cmap viene ignorato.

Devo creare un custom "normalizzare"? Se così è ciascun contorno colorato secondo il suo valore di bordo e poi riempito con lo stesso colore al successivo valore inferiore? Perchè è il sintomo di questo per ignorare la mia mappa di colori ... è questo qualche eccezione durante la costruzione che è essere stato catturato e la mia richiesta sta per essere ignorato silenziosamente?

I miei dati originali aveva valori mancanti. Ho giocato con fare thise nan, grandi e piccoli ... in ogni caso ho cercato di loro mascheramento e non mascherare i valori "fuori". Ho anche provato tutte le permutazioni che utilizzano i livelli di default e norma.

lev = [0.1,0.2,0.5,1.0,2.0,4.0,8.0,16.0,32.0]
norml = colors.normalize(0,32)
cs = plt.contourf(x,z,data,cmap=cm.gray, levels=lev, norm = norml)

Spero che questo frammento è sufficiente per almeno iniziare la conversazione.

Grazie, Eli

È stato utile?

Soluzione

Se ho capito bene, è necessario ridimensionare i vostri dati a colori utilizzando i livelli come base piuttosto che lineare di default di scala. Se è vero, allora è necessario utilizzare colors.BoundaryNorm come la norma fattore. Si consideri il seguente esempio:

x = np.arange(0,8,0.1)
y = np.arange(0,8,0.1)
z = (x[:,None]-4) ** 2 + (y[None,:]-4) ** 2

lev = [0.1,0.2,0.5,1.0,2.0,4.0,8.0,16.0,32.0]
norml = colors.BoundaryNorm(lev, 256)
cs = plt.contourf(x, y, z, cmap = cm.jet, levels = lev, norm = norml)
plt.show()

Questo produce

entrare descrizione dell'immagine qui

Confronto al comportamento Normalize predefinito:

entrare descrizione dell'immagine qui

La speranza che aiuta.

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