Как назначить значения цвета RGB сетке сетки с помощью matplotlib - PullRequest
5 голосов
/ 16 ноября 2011

Пожалуйста, рассмотрите этот упрощенный фрагмент:

import numpy as np

x = np.arange(3)
y = np.arange(2)

X, Y = np.meshgrid(x,y)

Я хотел бы назначить уже подготовленные значения цвета для каждой ячейки сетки. У меня есть значения цвета той же формы, что и у сетки XY для каждого канала RGB, как у нормализованных значений RGB - так что это 3 единичных массива, каждый из которых состоит из чисел с плавающей точкой от 0 до 1, представляя значение канала

Я впервые попробовал с matplotlib.pyplot.pcolor , так как это похоже на точный инструмент для того, что я хочу, но я не могу понять, как выполняется сопоставление цветов.

Кажется, что цветовой массив (C в документации) отображается по умолчанию (или назначается вручную), но я не могу понять логику значений в этом цветовом массиве и его роль.
Если значения отображаются на цветовую карту по умолчанию (или назначенную) из значения ячейки сетки, тогда какова цель цветового массива C?
Я сделал этот массив C вручную для приведенного выше примера (массив numpy 2x1), но независимо от его значений, я получаю одинаковые цвета, которые зависят только от значения ячейки сетки, а не от значений в этом массиве C.

Так что я запутался здесь и прошу любезной помощи, которая не обязательно должна быть объяснением этой функции pcolor, но, возможно, как правильно назначить значения цвета для сетки с помощью matplotlib

1 Ответ

4 голосов
/ 16 ноября 2011

Вы хотите imshow вместо pcolor.(Хотя вы можете использовать pcolor или pcolormesh для этого.)

import numpy as np
import matplotlib.pyplot as plt

# Make some random data to represent your r, g, b bands.
ny, nx = 2, 3
r, g, b = [np.random.random(ny*nx).reshape((ny, nx)) for _ in range(3)]

c = np.dstack([r,g,b])

plt.imshow(c, interpolation='nearest')
plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...