Domanda

Sto tracciando un istogramma usando

plt.imshow(hist2d, norm = LogNorm(), cmap = gray)
.

Dove hist2d è una matrice di valori di istogramma.Questo funziona bene tranne che per elementi in hist2d zero.In particolare, ottengo la seguente immagine

istogramma

Ma vorrei che le patch bianche siano nere.

Grazie!

È stato utile?

Soluzione

Ecco un metodo alternativo che non richiede di muccare con i tuoi dati impostando un valore RGB per i pixel cattivi.

import copy
data = np.arange(25).reshape((5,5))
my_cmap = copy.copy(matplotlib.cm.get_cmap('gray')) # copy the default cmap
my_cmap.set_bad((0,0,0))
plt.imshow(data, 
           norm=matplotlib.colors.LogNorm(), 
           interpolation='nearest', 
           cmap=my_cmap)
.

Il problema è che i contenitori con 0 non possono essere registrati correttamente normalizzati in modo che vengano contrassegnati come "cattivi", che sono mappati in modo diverso.Il comportamento predefinito è quello di non disegnare nulla su quei pixel.Puoi anche specificare quale colore disegnare pixel che sono sopra o sotto i limiti della mappa dei colori (il valore predefinito è quello di disegnarli come il colore più alto / basso).

Altri suggerimenti

Se sei felice con il ridimensionamento del colore così com'è, e vuoi semplicemente che i valori 0 siano neri, cambierei semplicemente la matrice di ingresso in modo che gli 0s siano sostituiti dal valore più piccolo successivo:

import matplotlib.pyplot as plt
import matplotlib.cm, matplotlib.colors
import numpy

hist2d = numpy.arange(9).reshape(3,3)

plt.imshow(numpy.maximum(hist2d, sorted(hist2d.flat)[1]), 
           interpolation='nearest', 
           norm = matplotlib.colors.LogNorm(), 
           cmap = matplotlib.cm.gray)
.

Produce

0- loading= Mimum Picture">

è stato generato con la funzione MATPLOTLIB Hist2D?

Tutto ciò che devi fare è passare attraverso la matrice e impostare un po 'di valore arbitrario del pavimento, quindi assicurati di tracciare questo con i limiti fissi

for f in hist2d:
   f += 1e-3
.

Poi quando si mostra la figura, tutto lo spazio bianco sarà ora al valore del pavimento e verrà visualizzato sulla trama logiano.Tuttavia, se silenzi Hist2D scegli automaticamente il ridimensionamento per te, vorrà utilizzare il valore del piano 1E-3 come minimo.Per evitare ciò, è necessario impostare i valori VMin e VMAX in Hist2D

hist2d(x,y,bins=40, norm=LogNorm(), vmin=1, vmax=1e4)
.

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