Oto przykład
import numpy as np
import matplotlib.pyplot as plt
x = np.random.rand(100)
y = np.random.rand(100)
t = np.arange(100)
plt.scatter(x, y, c=t)
plt.show()
Tutaj ustawiasz kolor na podstawie indeksu t
, który jest po prostu tablicą [1, 2, ..., 100]
.
Być może łatwiejszy do zrozumienia przykład jest nieco prostszy
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(100)
y = x
t = x
plt.scatter(x, y, c=t)
plt.show()
Zwróć uwagę, że tablica, którą przekazujesz jako c
, nie musi mieć określonej kolejności ani typu, tj. Nie musi być sortowana ani liczbami całkowitymi, jak w tych przykładach. Procedura kreślenia przeskaluje mapę kolorów w taki sposób, aby minimalne / maksymalne wartości c
odpowiadały dolnej / górnej części mapy kolorów.
Colormaps
Możesz zmienić mapę kolorów, dodając
import matplotlib.cm as cm
plt.scatter(x, y, c=t, cmap=cm.cmap_name)
Importowanie matplotlib.cm
jest opcjonalne, podobnie jak colormaps cmap="cmap_name"
. Istnieje strona odniesienia z mapami kolorów pokazująca, jak każdy z nich wygląda. Wiedz również, że możesz odwrócić mapę kolorów, po prostu nazywając ją jako cmap_name_r
. Więc też
plt.scatter(x, y, c=t, cmap=cm.cmap_name_r)
plt.scatter(x, y, c=t, cmap="cmap_name_r")
będzie działać. Przykładami są "jet_r"
lub cm.plasma_r
. Oto przykład z nową 1.5 Colormap viridis:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(100)
y = x
t = x
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.scatter(x, y, c=t, cmap='viridis')
ax2.scatter(x, y, c=t, cmap='viridis_r')
plt.show()
Paski kolorów
Możesz dodać pasek kolorów za pomocą
plt.scatter(x, y, c=t, cmap='viridis')
plt.colorbar()
plt.show()
Zwróć uwagę, że jeśli jawnie używasz rysunków i wykresów pomocniczych (np. fig, ax = plt.subplots()
Lub ax = fig.add_subplot(111)
), dodanie paska kolorów może być nieco bardziej skomplikowane. Dobre przykłady można znaleźć tutaj dla pojedynczego paska koloru podrzędnego, a tutaj dla 2 wykresów podrzędnych 1 paska koloru .
plt.colorbar()
polecenia.cm.colormap_name
acm.cmapname
nie rzeczywiste zmienne wmatplotlib.cm
; to tylko pseudokod dlacm.jet
lubcm.veridis_r
, itp.cmap
lubc
listy już wykreślonej krzywej?Aby dodać do powyższej odpowiedzi wflynny, możesz znaleźć dostępne mapy kolorów tutaj
Przykład:
import matplotlib.cm as cm plt.scatter(x, y, c=t, cmap=cm.jet)
lub alternatywnie,
plt.scatter(x, y, c=t, cmap='jet')
źródło
Pasek kolorów podplotu
W przypadku wykresów podrzędnych z rozproszeniem możesz oszukać pasek kolorów na swoich osiach, budując element „dający się odwzorować” za pomocą dodatkowej figury, a następnie dodając go do pierwotnego wykresu.
Jako kontynuacja powyższego przykładu:
import numpy as np import matplotlib.pyplot as plt x = np.arange(10) y = x t = x fig, (ax1, ax2) = plt.subplots(1, 2) ax1.scatter(x, y, c=t, cmap='viridis') ax2.scatter(x, y, c=t, cmap='viridis_r') # Build your secondary mirror axes: fig2, (ax3, ax4) = plt.subplots(1, 2) # Build maps that parallel the color-coded data # NOTE 1: imshow requires a 2-D array as input # NOTE 2: You must use the same cmap tag as above for it match map1 = ax3.imshow(np.stack([t, t]),cmap='viridis') map2 = ax4.imshow(np.stack([t, t]),cmap='viridis_r') # Add your maps onto your original figure/axes fig.colorbar(map1, ax=ax1) fig.colorbar(map2, ax=ax2) plt.show()
Zwróć uwagę, że wyprowadzisz również dodatkową liczbę, którą możesz zignorować.
źródło