Создание цветовой карты в python из списка цветов RGB

#python #matplotlib #colormap

#python #matplotlib #цветовая карта

Вопрос:

Я хочу создать цветовую карту в python, похожую на это изображение: введите описание изображения здесь

но моя карта состоит только из 3 строк и 4 столбцов. И я хочу присвоить определенное значение цвета каждому квадрату, используя значения RGB. Я пробовал этот код

 colors=np.array([[0.01, 0.08, 0.01], [0.01, 0.16, 0.01], [0.01, 0.165, 0.01], [0.01, 0.3, 0.01],
                 [0.01, 0.2, 0.01], [0.666, 0.333, 0.01], [0.01, 0.165, 0.01], [0.01, 0.3, 0.01],
                 [0.01, 0.2, 0.01], [0.666, 0.333, 0.01], [0.01, 0.165, 0.01], [0.01, 0.3, 0.01]])


fig, ax=plt.subplots()
ax.imshow(colors)
ax.set_aspect('equal')
plt.show()
 

но результат не соответствует моим ожиданиям. Кажется, что с помощью этого метода я не могу использовать значения RGB для представления цвета для квадрата. Кто-нибудь может мне помочь, пожалуйста? Спасибо!

Комментарии:

1. Что вы получаете вместо своих ожиданий? Каковы ваши ожидания?

2. Является ли массив, который вы показали, 2D-данными, которые вы хотите отобразить? Если это так, вы не указали никаких цветов. Или это должны быть цвета? Если да, то какие 2D-данные вы хотите отобразить?

3. @mkrieger1 как я уже сказал, я хочу, чтобы цветовая карта состояла из 3 строк и 4 столбцов, но на моем рисунке показана карта из 12 строк и 3 столбцов. Вы можете попробовать скопировать и запустить мой код, чтобы увидеть результат. Извините, что я не могу опубликовать изображение в этом разделе комментариев.

4. В любом случае вы не должны публиковать изображения в комментариях, вместо этого отредактируйте вопрос.

5. У вас есть массив (12,3) цветов, в то время как вам нужно (3, 4, 3) изображение, один цвет RGB на пиксель.

Ответ №1:

У вас есть массив (12,3) цветов, в то время как вам нужно (4, 3, 3) изображение, один цвет RGB на пиксель.

 import numpy as np  # type: ignore
import matplotlib.pyplot as plt  # type: ignore

colors = np.array(
    [
        # this is the first row
        [
            # these are the 3 pixels in the first row
            [0.01, 0.08, 0.01],
            [0.01, 0.16, 0.01],
            [0.01, 0.165, 0.01],
        ],
        [
            [0.01, 0.3, 0.01],
            [0.01, 0.2, 0.01],
            [0.666, 0.333, 0.01],
        ],
        [
            [0.01, 0.165, 0.01],
            [0.01, 0.3, 0.01],
            [0.01, 0.2, 0.01],
        ],
        # this is the fourth row
        [
            [0.666, 0.333, 0.01],
            [0.01, 0.165, 0.01],
            [0.01, 0.3, 0.01],
        ],
    ]
)
print(colors.shape)


fig, ax = plt.subplots()
ax.imshow(colors)
ax.set_aspect("equal")
plt.show()
 

Переставьте данные по мере необходимости в строках / столбцах.

Комментарии:

1. Большое вам спасибо!