Значения не нанесены на график и не соответствуют должным образом в 2D-карте теплопроводности matplotlib / seaborn с координатами (x, y) - PullRequest
0 голосов
/ 27 октября 2019

У меня есть .txt-файл с ~ 100.000 строк, содержащий следующие столбцы: x , y и dat .

x и y являются координатами (2D), а dat содержит значение соответствующей пары x / y. Теперь я хотел бы создать тепловую карту, используя эти данные. На первый взгляд, я подумал, что все заработало, но потом понял, что значения отображаются неправильно. Самое большое значение dat , которое встречается в текстовом файле, составляет ~ 30, в то время как в цветовой панели тепловой карты (справа) отображаются значения до значений 5000 и выше.

Вот так выглядит моя тепловая карта

x / y - координаты определенного места в комнате, в то время как столбец dat содержитзначение яркости / количества света по этим координатам в этой комнате. Таким образом, чем ярче пятно в комнате, тем темнее должна быть тепловая карта в этом конкретном месте.

Текстовый файл выглядит так (всего несколько строк):

     x                y           dat
  81.1979           -150       -3.65167       
  81.1979            -50       -3.65167        
  81.1979             50       -3.65167        
  81.1979            150       -3.65167       
 -18.8021           -150       -3.65167    
 -18.8021            -50       -3.65167      
 -18.8021             50       -3.65167      
 -18.8021            150       -3.65167      
 -118.802           -150       -3.65167      
 -118.802            -50       -3.65167       
 -118.802             50       -3.65167      
 -118.802            150       -3.65167   ...

Вот код, который я использую для создания тепловой карты, опубликованной выше:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns

# load data from text-file
data = np.loadtxt(fname='test.txt', dtype=float, skiprows=1)

# get the columns
x, y, dat = data[:, 0], data[:, 1], data[:, 2]

# put it into the right format so heatmap can use it for plot
df = pd.DataFrame({'X': x, 'Y': y, 'Dat': dat})
dfp = df.pivot(index='Y', columns='X', values='Dat')

# create heatmap
sns.heatmap(dfp, annot=False, cmap='YlGn', cbar=True)
plt.show()

Я прочитал много вопросов здесь о stackoverflow и учебниках по seaborn и matplotlib, но не могу понять, что здесь не так. Я надеюсь, что кто-то, кто имеет опыт с matplotlib или seaborn, может помочь мне или предложить лучший метод, как я мог бы выполнить свою задачу.

...