Есть ли способ преобразовать скалярные значения в массиве в индексы цветовой карты matplotlib? - PullRequest
0 голосов
/ 10 июля 2019

У меня есть массив, который состоит из группы чисел с плавающей точкой (например, [1202.21, -124.4, 23, ....]), которые я построил с помощью matplotlib с помощью программы colormap.Есть ли способ получить индексы струйной шкалы (т.е. одно значение 0-255) для каждого числа с плавающей точкой в ​​моем массиве?Я хочу отобразить некоторые статистические данные о данных, но это будет иметь смысл только в том случае, если статистические данные (среднее значение, стандартное отклонение и т. Д.) Находятся в диапазоне 0–255.

Я попытался вернуть массив, используемыйmatplotlib использует get_array (), но это, похоже, не меняет данные.

Спасибо!

1 Ответ

1 голос
/ 10 июля 2019

numpy.digitize дает номер ячейки для данных, помещаемых в ячейки. Здесь у вас есть 256 корзин, и последняя корзина закрыта. Следовательно,

import numpy as np

a = np.array([1,2,3])

N = 256
bins = np.linspace(a.min(), a.max(), N+1)
dig = np.digitize(a, bins)-1
dig[dig == N] = N-1 # map the last half-open interval back
print(dig)

Теперь убедитесь, что это действительно индексы цветовой карты:

import matplotlib.pyplot as plt

cmap = plt.cm.jet
norm = plt.Normalize(a.min(), a.max())
colors1 = cmap(norm(a))

colors2 = cmap(dig)

assert(np.all(colors1 == colors2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...