Есть ли способ конвертировать числа в цвета - PullRequest
1 голос
/ 04 февраля 2020

Я делаю проект по радиоастрономии, в котором мне нужно подать данные на мой P C с входного измерительного излучения. Вход будет получать более высокое значение, когда он направлен на большой источник излучения, такой как Солнце, и более низкие значения, когда нет. Диапазон значений от 0 до 9.

Пример ввода выглядит следующим образом:

1221211
1332331
1489841
1699971
1489841
1332331
1221211

Середина массива, содержащая более высокие значения, должна отображаться в более яркий пиксель, тогда как более низкие значения должны отображаться в темный пиксель соответственно.

Эти числа могут быть прочитаны с использованием любой библиотеки python и заменены на пиксели с соответствующими значениями чисел.

1 Ответ

2 голосов
/ 04 февраля 2020

Для этого вы можете использовать colourmaps из matplotlib - вот пример с вашими данными:

Код:

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

inpt = np.array([[1, 2, 2, 1, 2, 1, 1],
                 [1, 3, 3, 2, 3, 3, 1],
                 [1, 4, 8, 9, 8, 4, 1],
                 [1, 6, 9, 9, 9, 7, 1],
                 [1, 4, 8, 9, 8, 4, 1],
                 [1, 3, 3, 2, 3, 3, 1],
                 [1, 2, 2, 1, 2, 1, 1]])

norm = mpl.colors.Normalize(vmin=0, vmax=9)
plt.imshow(inpt, cmap='hot', norm=norm)

Вывод:

enter image description here

Чтобы просто получить кортеж значений RGBA, просто используйте, например:

>>> cmap = plt.cm.hot
>>> cmap(norm(5))
(0.0, 0.7110320290467349, 1.0, 1.0)
>>> mpl.colors.rgb2hex(cmap(norm(5))) # Hex Code
'#ff8000'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...