Вот пример
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
. Вот пример с новой цветовой картой viridis 1.5:
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()
команды.