Seaborn 的热图在 annot=True 时显示 0,而不是 0.0。我该如何改变这个?

Seaborn's heatmap when annot=True displays 0, instead of 0.0. How do I change this?

我正在 Python 中构建一个 seaborn 热图。这些值将显示在热图中 (annot=True)。我使用 np.around(matrix,1) 将热图上表示的矩阵(pandas DataFrame)上的所有值四舍五入到小数点后一位。矩阵上的一些值是 0,那么 numpy 简单地四舍五入到 0 而不是 0.0 也就不足为奇了。问题是我需要零在 seaborn 热图上显示为 0.0。有什么建议吗?

编辑:我尝试将矩阵设置为 np 数组并设置 np.set_printoptions(1,floatmode='fixed'),但是当我这样做时,我丢失了列标签,然后我需要构建热图,所以这不是一个选项。

编辑 2:我尝试将 annot=True 更改为 annot=np.around(np.array(matrix),1).astype(str),也就是说,不是在热图上显示 pd DataFrame,而是将要显示的矩阵转换为 np 数组,四舍五入并“固定”为字符串,但后来我得到 ValueError: Unknown format code 'g' for object of type 'str',这似乎是一个错误。

无需事先对数据进行舍入,您只需更改注释格式即可。对于 1 d.p 你做如下,

sns.heatmap(df, annot=True,fmt='.1f')