Seaborn热力图,线条宽度不同

4

我正在使用Seaborn绘制热力图。如果我使用"linewidth=value"设置分割每个单元格的线条,线条会被打印出来,但是它们的宽度不同。(例如,在我的下面的图中,外部垂直线比内部垂直线细,1和2之间的水平线比其他两条线更粗)。

这里有一个简单的代码可以重现这个问题:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns;sns.set()

plt.figure(figsize=(10,5)) 
df = np.random.rand(4,6)
ax = sns.heatmap(df,cmap="Blues",linewidths=1,linecolor='k')
plt.show()

这是我得到的热力图:

为什么linewidths都是1,但线条的宽度不同?

先不考虑第一行和最后一行单元格比其他单元格小的问题,我知道那是matplotlib版本的问题。


@ImportanceOfBeingErnest 我编辑了问题以更好地解释我的意思。我不是在问第一行和最后一行的单元格被切成两半,而是关于分隔所有单元格的线宽度不同。 - Ascan
这可能是像素对齐的问题。它不应该出现在 PDF 输出中,并且随着 DPI 的增加,它应该变得不那么明显。 - ImportanceOfBeingErnest
1个回答

1
我遇到了同样的问题。将rasterized=False作为参数传递给sns.heatmap(),解决了我的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接