2016-07-25 13 views
1

Ich möchte ein Raster mit Werten erhalten, die auf Farben abgebildet sind. Es sollte wie eine Wahrscheinlichkeitsverteilung sein, wobei 1,0 Schwarz und 0,0 bis Weiß, Grau dazwischen entspricht. Lesen Sie die Antworten here Ich versuche es aus für meinen Fall:Wahrscheinlichkeitsgitter matplotlib

from matplotlib import mpl,pyplot 
import numpy as np 

zvals = np.zeros((10,5)) 
zvals[5,1] = 0.5 
zvals[5,2] = 0.3 
zvals[5,3] = 0.7 
zvals[5,4] = 5.8 

cmap = mpl.colors.LinearSegmentedColormap.from_list('my_colormap',['white','black'],256) 

img = pyplot.imshow(zvals,interpolation='nearest', cmap = cmap) 

pyplot.colorbar(img,cmap=cmap) 
pyplot.show() 

ich das Problem zu sehen, weil lineare Abbildung maximalen Wert aus dem 2D-Array als schwarz behandelt. Array enthält jedoch nicht notwendigerweise den Wert 1.0.

Wie schwer Grenzen 0,0 und 1,0, mit glattem Übergang dazwischen gesetzt?

+0

Sie migh scikit-lernt [MinMaxScaler] (http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing verwenden möchten .MinMaxScaler.html) zur Vorverarbeitung Ihrer Daten (= Skalierung auf [0,1]). – sascha

+0

danke, aber es macht das Ding nicht. Ich möchte die Daten auf ihre [0,1] Werte überprüfen und sie nicht in diesem Intervall abbilden. – beginh

Antwort

3

Verwenden Sie die vmin und vmax Argumente von imshow:

img = pyplot.imshow(zvals, interpolation='nearest', cmap=cmap, vmin=0, vmax=1) 
+0

wow nett, ich habe in diesem Fall nicht an diese Parameter von imshow gedacht. Vielen Dank! – beginh