gpt4 book ai didi

python - 具有多种配色方案的带注释的热图

转载 作者:太空宇宙 更新时间:2023-11-04 09:34:18 25 4
gpt4 key购买 nike

我有以下数据框,并且想在热图中使用不同的配色方案来区分每个“步骤”中的微小小数差异。

enter image description here

示例数据:

Sample  Step 2  Step 3  Step 4  Step 5  Step 6  Step 7  Step 8
A 64.847 54.821 20.897 39.733 23.257 74.942 75.945
B 64.885 54.767 20.828 39.613 23.093 74.963 75.928
C 65.036 54.772 20.939 39.835 23.283 74.944 75.871
D 64.869 54.740 21.039 39.889 23.322 74.925 75.894
E 64.911 54.730 20.858 39.608 23.101 74.956 75.930
F 64.838 54.749 20.707 39.394 22.984 74.929 75.941
G 64.887 54.781 20.948 39.748 23.238 74.957 75.909
H 64.903 54.720 20.783 39.540 23.028 74.898 75.911
I 64.875 54.761 20.911 39.695 23.082 74.897 75.866
J 64.839 54.717 20.692 39.377 22.853 74.849 75.939
K 64.857 54.736 20.934 39.699 23.130 74.880 75.903
L 64.754 54.746 20.777 39.536 22.991 74.877 75.902
M 64.798 54.811 20.963 39.824 23.187 74.886 75.895

我正在寻找的示例: enter image description here

最佳答案

我的第一种方法是基于具有多个子图的图形。图的数量将等于数据框中的列数;地 block 之间的差距可以缩小到零:

cm = ['Blues', 'Reds', 'Greens', 'Oranges', 'Purples', 'bone', 'winter']
f, axs = plt.subplots(1, df.columns.size, gridspec_kw={'wspace': 0})
for i, (s, a, c) in enumerate(zip(df.columns, axs, cm)):
sns.heatmap(np.array([df[s].values]).T, yticklabels=df.index, xticklabels=[s], annot=True, fmt='.2f', ax=a, cmap=c, cbar=False)
if i>0:
a.yaxis.set_ticks([])

结果: enter image description here

不确定这是否会导致数据的有用甚至 self 描述的可视化,但这是您的选择 - 也许这有助于开始...


补充:

关于添加颜色条:当然可以。但是 - 除了不知道你的数据背景和可视化的目的 - 我想对所有这些添加一些想法:

首先:将所有这些颜色条作为单独的一组条添加到热图的一侧或下方可能是可能的,但我发现已经很难读取数据,另外:你已经有了所有这些注释 - 我认为它会把一切搞得一团糟。
另外:与此同时,@ImportanceOfBeingErnest 就该主题提供了如此出色的解决方案,我认为这在这里意义不大。

第二:如果你真的想坚持使用热图,也许拆分并为每一列提供颜色条会更适合:

cm = ['Blues', 'Reds', 'Greens', 'Oranges', 'Purples', 'bone', 'winter']
f, axs = plt.subplots(1, df.columns.size, figsize=(10, 3))
for i, (s, a, c) in enumerate(zip(df.columns, axs, cm)):
sns.heatmap(np.array([df[s].values]).T, yticklabels=df.index, xticklabels=[s], annot=True, fmt='.2f', ax=a, cmap=c)
if i>0:
a.yaxis.set_ticks([])
f.tight_layout()

enter image description here

然而,话虽如此 - 我敢怀疑这是否是您数据的最佳可视化效果。当然,我不知道你想用这些图说、看或发现什么,但这就是重点:如果可视化类型符合需要,我想我会知道(或至少可以想象)。

举个例子:
一个简单的 df.plot() 结果

enter image description here

我觉得这比热图更能在十分之一秒内说明您的列的不同特征。

或者您是否明确地关注每列均值的差异?

(df - df.mean()).plot()

enter image description here

...或者它们周围每一列的分布情况?

(df - df.mean()).boxplot()

enter image description here

我想说的是:在你开始/必须解释任何事情之前,当一个情节开始讲述有关底层数据的某事时,数据可视化就会变得强大......

关于python - 具有多种配色方案的带注释的热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54397334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com