python - Seaborn Heatmap Subplot:如何将数据分配给每个子图
问题描述
我想使用 seaborn 生成带有 24 个子图的热图。最后我想得到这样的东西:
我尝试使用以下代码:
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 ...)...我尝试了几个选项,但找不到正确的方法。使用 seaborn 热图将数据分配给子图的最佳/清晰方法是什么?
注意:此代码用于绘制我的数据的一部分。目的是在一列中绘制 p1 到 p6。对于其余的列/行,我将在了解其工作原理后添加数据。
提前致谢!
解决方案
推荐阅读
- react-native - React Native ScrollView 在横向模式下不滚动
- c# - 我想在 C# 中遍历我的优先级队列
- datagridview - DataGridView 单元格颜色
- python-3.x - 在 python 脚本中使用 pip 安装要求
- flutter - 在 Stepper 中保持状态
- api - Content-Type 为 multipart/form-data 时发送 API 请求失败
- android - 删除 Exoplayer 中的上一个视图
- javascript - 每次我用 JS 添加一个新的 div 时,网格 div 都会变大
- sql - 检索非规范化表中列具有不同值的行
- xml - PowerShell - 从 XML 中提取数据,然后在目录中查找