Тепловая карта в Python с использованием matplotlib из 3-х независимых массивов - PullRequest
0 голосов
/ 08 января 2020

Я хотел бы сделать график тепловой карты, используя три независимых вектора x, y и z. Я посмотрел примеры на inte rnet, и большинство из них показывают, как сделать график тепловых карт для x, y и z, представленных в виде 2D-матрицы

Итак, кто-то может помочь мне, как я могу конвертировать 3 независимых вектора в 2d матрицу, которые я в конечном итоге могу использовать для построения графиков тепловых карт

Одна вещь, которую я подумал, это создать матрицу, сначала дискретизировав и упорядочив в порядке возрастания x и y, и найдя z в новом комбинации "х" и "у". Но могут быть случаи, когда «z» не может быть вычислено из-за нехватки данных во время интерполяции

Я немного сбит с толку, и я хотел бы обратиться за помощью в этом отношении

Ответы [ 2 ]

0 голосов
/ 08 января 2020

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

import numpy as np
from scipy.interpolate import griddata
import matplotlib.pyplot as plt

x = mdf_merged.get('VariableX').samples
y = mdf_merged.get('VariableY').samples
z = mdf_merged.get('VariableZ').samples
###
xi = np.linspace(min(x),max(x),10)
yi = np.linspace(min(y),max(y),20)
zi = griddata((x, y), z, (xi[None,:], yi[:,None]), method='linear')
plt.pcolormesh(xi, yi, zi)
0 голосов
/ 08 января 2020

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

Из документов:

matplotlib.pyplot.pcolormesh(*args, alpha=None, norm=None, cmap=None, vmin=None, vmax=None, shading='flat', antialiased=False, data=None, **kwargs)

Создание псевдоцветного графика с нерегулярным прямоугольник angular сетка.

Подпись вызова:

pcolor([X, Y,] C, **kwargs)

X и Y могут использоваться для указания углов четырехугольников.

...