Подплот Seaborn Heatmap: Как назначить данные каждому подграфу - PullRequest
0 голосов
/ 26 марта 2020

Я хотел бы создать тепловую карту с 24 подграфами, используя seaborn. В конце я хотел бы получить что-то вроде этого:

enter image description here

Я попытался с помощью следующего кода:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
from scipy.ndimage.filters import gaussian_filter

d1 = pd.read_csv('upper_POPC.txt', sep="    ", decimal=".")
d2 = pd.read_csv('upper_SDPE.txt', sep="    ", decimal=".")
d3 = pd.read_csv('upper_SDPS.txt', sep="    ", decimal=".")
d4 = pd.read_csv('upper_SAPI.txt', sep="    ", decimal=".")
d5 = pd.read_csv('upper_CDL2.txt', sep="    ", decimal=".")
d6 = pd.read_csv('upper_CHOL.txt', sep="    ", decimal=".")

heatmap_d1 = pd.pivot_table(d1, values='Value(s)', index='  X', columns='Y')
heatmap_d2 = pd.pivot_table(d2, values='Value(s)', index='  X', columns='Y')
heatmap_d3 = pd.pivot_table(d3, values='Value(s)', index='  X', columns='Y')
heatmap_d4 = pd.pivot_table(d4, values='Value(s)', index='  X', columns='Y')
heatmap_d5 = pd.pivot_table(d5, values='Value(s)', index='  X', columns='Y')
heatmap_d6 = pd.pivot_table(d6, values='Value(s)', index='  X', columns='Y')

smooth_d1 = gaussian_filter(heatmap_d1, sigma=1)
smooth_d2 = gaussian_filter(heatmap_d2, sigma=1)
smooth_d3 = gaussian_filter(heatmap_d3, sigma=1)
smooth_d4 = gaussian_filter(heatmap_d4, sigma=1)
smooth_d5 = gaussian_filter(heatmap_d5, sigma=1)
smooth_d6 = gaussian_filter(heatmap_d6, sigma=1)

fig, axes = plt.subplots(nrows=6, ncols=4, figsize=(12, 8), sharey=True)

    p1 = sns.heatmap(smooth_d1, cmap="coolwarm", xticklabels=False, yticklabels=False, ax=axes[0,0])
    p2 = sns.heatmap(smooth_d2, cmap="coolwarm", xticklabels=False, yticklabels=False, ax=axes[1,0])
    p3 = sns.heatmap(smooth_d3, cmap="coolwarm", xticklabels=False, yticklabels=False, ax=axes[2,0])
    p4 = sns.heatmap(smooth_d4, cmap="coolwarm", xticklabels=False, yticklabels=False, ax=axes[3,0])
    p5 = sns.heatmap(smooth_d5, cmap="coolwarm", xticklabels=False, yticklabels=False, ax=axes[4,0])
    p6 = sns.heatmap(smooth_d6, cmap="coolwarm", xticklabels=False, yticklabels=False, ax=axes[5,0])

Вывод : Этот код не работает, но когда я строю только один набор данных, он работает. Возможная проблема: проблема заключается в назначении каждого подграфа набору данных (p1, p2 ...) ... Я пробовал несколько вариантов, но не могу найти правильный путь. Каков наилучший / понятный способ присвоения данных подграфам с использованием тепловой карты морского побережья?

NB. Этот код предназначен для построения одной части моих данных. Цель состоит в том, чтобы построить графики от p1 до p6 в одном столбце. а для остальных столбцов / строк я добавлю данные, как только пойму, как они работают.

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

...