2012-10-06 6 views
12

Mi sto spostando da MatLab a Python e sto giocando con la funzione imshow.imshow (img, cmap = cm.gray) mostra un bianco per il valore 128

Non riesco a capire perché non mostri il valore 128 come grigio con Ho scelto il cmap come grigio.

Code example

Sembra in quanto utilizza la scala di grigi per la massima (128) e valori più bassi .. Io voglio usare la scala di grigi per [0: 255]. Come lo faccio?

risposta

23

Utilizzare i vmin e vmax parametri:

plt.imshow(bg, cmap=plt.get_cmap('gray'), vmin=0, vmax=255) 

Senza specificare vmin e vmax, plt.imshow auto-regola la sua gamma al min e max dei dati.


Non so di un modo per impostare di default vmin e vmax parametri per tutti i grafici imshow, ma si potrebbe usare functools.partial per preparare un comando imshow simile personalizzato con parametri di default impostata:

import matplotlib.pyplot as plt 
import numpy as np 
import functools 

bwimshow = functools.partial(plt.imshow, vmin=0, vmax=255, 
          cmap=plt.get_cmap('gray')) 

dots = np.random.randn(10, 10)*255 
bwimshow(dots) 
cbar = plt.colorbar() 

plt.show() 
+0

Grazie mille! :-): c'è un modo per impostare come valori predefiniti per tutti i grafici? – Norfeldt

+2

Sì, utilizzando 'functools.partial'. Vedi sopra. – unutbu

Problemi correlati