Mam następujący kod:
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()
To tworzy wykres wartości „v” na osiach X względem Y, przy użyciu określonej mapy kolorów. Osie X i Y są idealne, ale mapa kolorów rozciąga się między min a max v. Chciałbym, aby mapa kolorów znajdowała się w zakresie od 0 do 1.
Myślałem o użyciu:
plt.axis(...)
Aby ustawić zakresy osi, ale wymaga to tylko argumentów dla min i maks X i Y, a nie mapy kolorów.
Edytować:
Dla jasności powiedzmy, że mam jeden wykres, którego wartości mieszczą się w zakresie (0 ... 0,3), i inny wykres, którego wartości (0,2 ... 0,8).
Na obu wykresach chcę, aby zakres paska kolorów wynosił (0 ... 1). Na obu wykresach chcę, aby ten zakres kolorów był identyczny przy użyciu pełnego zakresu cdict powyżej (więc 0,25 na obu wykresach będzie tego samego koloru). Na pierwszym wykresie wszystkie kolory z przedziału od 0,3 do 1,0 nie pojawią się na wykresie, ale będą w klawiszu paska kolorów z boku. W drugim przypadku wszystkie kolory od 0 do 0,2 oraz od 0,8 do 1 nie pojawią się na wykresie, ale na pasku kolorów z boku.
Użyj funkcji CLIM (odpowiednik funkcji CAXIS w MATLAB):
źródło
Nie jestem pewien, czy jest to najbardziej eleganckie rozwiązanie (właśnie tego użyłem), ale możesz przeskalować dane do zakresu od 0 do 1, a następnie zmodyfikować pasek kolorów:
Dzięki dwóm różnym limitom możesz kontrolować zakres i legendę paska kolorów. W tym przykładzie na pasku wyświetlany jest tylko zakres od -0,5 do 1,5, podczas gdy mapa kolorów obejmuje od -2 do 2 (więc może to być zakres danych, który rejestrujesz przed skalowaniem).
Zamiast więc skalować mapę kolorów, skalujesz dane i dopasowujesz do tego pasek kolorów.
źródło
Korzystanie ze środowiska rysunku i .set_clim ()
Ta alternatywa może być łatwiejsza i bezpieczniejsza, jeśli masz wiele działek:
Pojedynczy pasek kolorów
Najlepszą alternatywą jest wtedy użycie jednego paska koloru dla całej powierzchni. Można to zrobić na różne sposoby. Ten samouczek jest bardzo przydatny do zrozumienia najlepszej opcji. Wolę takie rozwiązanie, które można po prostu skopiować i wkleić zamiast poprzedniej wizualizującej części kodu colorbar .
PS
Sugerowałbym użycie
pcolormesh
zamiast,pcolor
ponieważ jest szybszy (więcej informacji tutaj ).źródło