Ich habe folgenden Code:
import matplotlib.pyplot as plt
cdict = {
'red' : ( (0.0, 0.25, .25), (0.02, .59, .59), (1., 1., 1.)),
'green': ( (0.0, 0.0, 0.0), (0.02, .45, .45), (1., .97, .97)),
'blue' : ( (0.0, 1.0, 1.0), (0.02, .75, .75), (1., 0.45, 0.45))
}
cm = m.colors.LinearSegmentedColormap('my_colormap', cdict, 1024)
plt.clf()
plt.pcolor(X, Y, v, cmap=cm)
plt.loglog()
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.colorbar()
plt.show()
Dies erzeugt also ein Diagramm der Werte 'v' auf den Achsen X gegen Y unter Verwendung der angegebenen Farbkarte. Die X- und Y-Achse sind perfekt, aber die Farbkarte verteilt sich zwischen min und max von v. Ich möchte die Farbkarte zwingen, zwischen 0 und 1 zu liegen.
Ich dachte an:
plt.axis(...)
Um die Bereiche der Achsen festzulegen, werden jedoch nur Argumente für min und max von X und Y verwendet, nicht für die Farbkarte.
Bearbeiten:
Nehmen wir zur Verdeutlichung an, ich habe ein Diagramm, dessen Wertebereich (0 ... 0,3) beträgt, und ein anderes Diagramm, dessen Werte (0,2 ... 0,8).
In beiden Diagrammen soll der Bereich der Farbleiste (0 ... 1) sein. In beiden Diagrammen möchte ich, dass dieser Farbbereich unter Verwendung des gesamten obigen Bereichs von cdict identisch ist (daher haben 0,25 in beiden Diagrammen dieselbe Farbe). Im ersten Diagramm werden nicht alle Farben zwischen 0,3 und 1,0 im Diagramm angezeigt, sondern in der Farbbalken-Taste an der Seite. Im anderen Fall werden alle Farben zwischen 0 und 0,2 sowie zwischen 0,8 und 1 nicht im Diagramm angezeigt, sondern in der Farbleiste an der Seite.
Verwenden Sie die CLIM- Funktion (entspricht der CAXIS- Funktion in MATLAB):
quelle
Ich bin mir nicht sicher, ob dies die eleganteste Lösung ist (das habe ich verwendet), aber Sie können Ihre Daten auf den Bereich zwischen 0 und 1 skalieren und dann die Farbleiste ändern:
Mit den zwei verschiedenen Grenzwerten können Sie den Bereich und die Legende der Farbleiste steuern. In diesem Beispiel wird in der Leiste nur der Bereich zwischen -0,5 und 1,5 angezeigt, während die Farbkarte -2 bis 2 abdeckt (dies könnte also Ihr Datenbereich sein, den Sie vor der Skalierung aufzeichnen).
Anstatt die Farbkarte zu skalieren, skalieren Sie Ihre Daten und passen die Farbleiste daran an.
quelle
Verwenden der Figurenumgebung und .set_clim ()
Diese Alternative könnte einfacher und sicherer sein, wenn Sie mehrere Grundstücke haben:
Eine einzelne Farbleiste
Die beste Alternative ist dann, einen einzelnen Farbbalken für das gesamte Diagramm zu verwenden. Es gibt verschiedene Möglichkeiten, dies zu tun. Dieses Tutorial ist sehr nützlich, um die beste Option zu verstehen. Ich bevorzuge diese Lösung, die Sie einfach kopieren und einfügen können, anstatt den vorherigen Teil des Codes in der Farbleiste zu visualisieren .
PS
Ich würde vorschlagen,
pcolormesh
anstatt zu verwenden,pcolor
weil es schneller ist (mehr Infos hier ).quelle