Ось приклад
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()
Тут ви встановлюєте колір на основі індексу t
, який є просто масивом [1, 2, ..., 100]
.
Можливо, простіший для розуміння приклад - трохи простіший
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()
Зверніть увагу, що масив, який ви передаєте як такий c
, не повинен мати певного порядку чи типу, тобто його не потрібно сортувати чи цілі числа, як у цих прикладах. Процедура побудови графіку буде масштабувати карту кольорів таким чином, щоб мінімальне / максимальне значення c
відповідали нижній / верхній частині кольорової карти.
Кольорові карти
Ви можете змінити карту кольорів, додавши
import matplotlib.cm as cm
plt.scatter(x, y, c=t, cmap=cm.cmap_name)
Імпорт не matplotlib.cm
є обов’язковим, оскільки ви можете так cmap="cmap_name"
само добре називати кольорові карти . Існує довідкова сторінка кольорових карт, що показує, як виглядає кожна. Також знайте, що ви можете змінити кольорову карту, просто назвавши її як cmap_name_r
. Тож будь-який
plt.scatter(x, y, c=t, cmap=cm.cmap_name_r)
plt.scatter(x, y, c=t, cmap="cmap_name_r")
буду працювати. Прикладами є "jet_r"
або cm.plasma_r
. Ось приклад з новим 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()
Панелі кольорів
Ви можете додати кольорову панель за допомогою
plt.scatter(x, y, c=t, cmap='viridis')
plt.colorbar()
plt.show()
Зверніть увагу, що якщо ви явно використовуєте малюнки та підзаголовки (наприклад, fig, ax = plt.subplots()
або ax = fig.add_subplot(111)
), додавання кольорової панелі може бути дещо більш залученим. Хороші приклади можна знайти тут для однієї кольорової панелі додаткових ділянок, а тут для 2 додаткових графічних панелей 1 .
plt.colorbar()
команди.