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')
我正在 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')