Показать изображение тепловой карты с альфа-значениями — Matplotlib/Python

Я пытаюсь построить некоторые данные для их анализа.

Мои данные определяются следующим образом:

class Data(object):
    def __init__(self, rows=200, cols=300):
        """
        The Data constructor
        """
        # The data grid
        self.cols = cols
        self.rows = rows
        # The 2D data structure
        self.data = numpy.zeros((rows, cols), float)

Сначала у меня был такой метод:

  def generate_data_heat_map(data, x_axis_label, y_axis_label, plot_title, file_path):
    plt.figure()
    plt.title(plot_title)
    fig = plt.imshow(data.data, extent=[0, data.cols, data.rows, 0])
    plt.xlabel(x_axis_label)
    plt.ylabel(y_axis_label)
    plt.colorbar(fig)
    plt.savefig(file_path + '.png')
    plt.close()

Это дает мне что-то вроде изображения тепловой карты (второй рисунок), потому что я передаю ему MxN [яркость (оттенки серого, только массив с плавающей запятой)]. И не знаю, почему это не создает изображение в градациях серого, но до сих пор я не беспокоился об этом, потому что это результат, который я хотел.

После еще нескольких вычислений у меня был этот метод для визуализации моих данных, используя data_property как RGB и data_uncertaity как альфа-канал:

def generate_data_uncertainty_heat_map(data_property, data_uncertainty, x_axis_label, y_axis_label, plot_title, file_path):
    plt.figure()
    uncertainty = numpy.zeros((data_property.rows, data_property.cols, 4))
    uncertainty[..., :3] = data_property.data[..., numpy.newaxis]
    uncertainty[..., 3] = data_uncertainty.data
    plt.title(plot_title)
    fig = plt.imshow(uncertainty.data, extent=[0, data_property.cols, data_property.rows, 0])
    plt.xlabel(x_axis_label)
    plt.ylabel(y_axis_label)
    plt.colorbar(fig)
    plt.savefig(file_path + '.png')
    plt.close()

Но, конечно, это дает мне изображение в градациях серого с альфа-значениями, так как я повторяю одни и те же значения для R, G и B. Но мне действительно хотелось бы получить результат первого метода (цветной) с некоторыми вычисленными альфа-значениями как неуверенность в данных.

введите здесь описание изображения

Я заметил, что моя цветовая полоса тоже ничего не говорит о моих данных (она в RGB, я не могу использовать ее для анализа своих данных)

Я не знаю, как добиться желаемого результата, который состоит в том, чтобы иметь график «тепловой карты» с объединенными альфа-значениями, определенными с моими uncertainty_data, и цветной полосой, представляющей эту неопределенность. Как объединить эти два изображения выше:

Это как мой цвет: Рисунок 2

Это как моя альфа-версия: введите здесь описание изображения

С преобразованием, представленным @BlazBratanic, я думаю, что вижу немного цвета (не уверен в этом), но это далеко не то, что я ожидал.

введите здесь описание изображения

Все мои значения находятся в диапазоне от 0,0 до 1,0.

Заранее спасибо.


person pceccon    schedule 17.03.2014    source источник
comment
У тебя есть что-нибудь по этому поводу, @ubuntu?   -  person pceccon    schedule 17.03.2014


Ответы (1)


Используйте модуль Matplotlib cm, чтобы сопоставить оттенки серого со значениями цвета. Если я правильно помню, "jet" - это цветовая карта по умолчанию. Итак, вы бы сделали что-то вроде:

uncertainty = plt.cm.jet(data_property.data)
uncertainty[..., 3] = data_uncertainty.data
person Blaz Bratanic    schedule 17.03.2014
comment
Ничего, кроме моих тестовых данных. (: - person pceccon; 17.03.2014