У меня есть .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, может помочь мне или предложить лучший метод, как я мог бы выполнить свою задачу.