Вот пример
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()
команды.cm.colormap_name
аcm.cmapname
не фактические переменные вmatplotlib.cm
; это просто псевдокод дляcm.jet
orcm.veridis_r
и т. д.cmap
илиc
список уже построенной кривой?Чтобы добавить к ответу wflynny выше, вы можете найти доступные цветовые карты здесь
Пример:
import matplotlib.cm as cm plt.scatter(x, y, c=t, cmap=cm.jet)
или, альтернативно,
plt.scatter(x, y, c=t, cmap='jet')
источник
Цветовая полоса подзаголовка
Для подзаголовков с разбросом вы можете обмануть цветовую шкалу на своих осях, построив «отображаемую» с помощью вторичной фигуры и затем добавив ее к исходному сюжету.
Как продолжение приведенного выше примера:
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()
Обратите внимание, что вы также выведете вторичную цифру, которую можно игнорировать.
источник