首页 > 解决方案 > Seaborn Heatmap:分别调整垂直和水平线的线宽

问题描述

该参数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)

正常热图

plt.clf()
ax = sns.heatmap(uniform_data, linewidth=0.0001)

在此处输入图像描述

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

标签: matplotlibseabornheatmap

解决方案


设置线宽适用于每个单元格周围矩形的边缘宽度。只有垂直线,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()

结果图


推荐阅读