分别调整seaborn.heatmap的垂直和水平线宽

cmo*_*sig 1 python matplotlib heatmap seaborn

该参数linewidth调整每个单元之间的空间大小。例如:

import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
import numpy as np; np.random.seed(0)
uniform_data = np.random.rand(2000, 6)
ax = sns.heatmap(uniform_data)
Run Code Online (Sandbox Code Playgroud)

正常热图

plt.clf()
ax = sns.heatmap(uniform_data, linewidth=0.0001)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

您只能看到白色,因为我的热图形状明显倾斜:2000 行和 6 列。我想在每个单元格列之间有一个垂直的空白。因此,我需要想办法单独调整垂直线宽。如何才能做到这一点?

Joh*_*anC 6

设置线宽适用于每个单元格周围矩形的边宽。如果只有垂直线,axvline()则绘制一条垂直线,默认从绘图的顶部到底部。为了仅分隔列,可以在位置 1,2,...n-1 处绘制线条。在位置 0 和 n 处绘制一条线也有助于使列在视觉上等宽。

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

uniform_data = np.random.rand(200, 6)
ax = sns.heatmap(uniform_data)
for i in range(uniform_data.shape[1]+1):
    ax.axvline(i, color='white', lw=2)
plt.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud)

结果图