我希望绘制一个
所有单元格都有注释的示例:
这个错误的原因是什么?我怎样才能生成一个
seaborn.heatmap
并且只注释某些行/列。所有单元格都有注释的示例:
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
n1 = 5
n2 = 10
M = np.random.random((n1, n2))
fig, ax = plt.subplots()
sns.heatmap(ax = ax, data = M, annot = True)
plt.show()
在这些示例(段落添加值注释)之后,可以将一个带有每个单元格注释的数组作为annot
参数传递给seaborn.heatmap
:
annot:bool或矩形数据集,可选
如果为True,则在每个单元格中写入数据值。如果是与数据相同形状的类似数组, 则使用它来注释热图,而不是使用数据。 请注意,数据框将按位置匹配,而不是索引。
如果我尝试生成一个str
数组并将其作为annot
参数传递给seaborn.heatmap
,则会出现以下错误:
Traceback (most recent call last):
File "C:/.../myfile.py", line 16, in <module>
sns.heatmap(ax = ax, data = M, annot = A)
File "C:\venv\lib\site-packages\seaborn\_decorators.py", line 46, in inner_f
return f(**kwargs)
File "C:\venv\lib\site-packages\seaborn\matrix.py", line 558, in heatmap
plotter.plot(ax, cbar_ax, kwargs)
File "C:\venv\lib\site-packages\seaborn\matrix.py", line 353, in plot
self._annotate_heatmap(ax, mesh)
File "C:\venv\lib\site-packages\seaborn\matrix.py", line 262, in _annotate_heatmap
annotation = ("{:" + self.fmt + "}").format(val)
ValueError: Unknown format code 'g' for object of type 'numpy.str_'
以下是生成 ValueError
的代码(本例中我尝试以第四列注释为例):
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
n1 = 5
n2 = 10
M = np.random.random((n1, n2))
A = np.array([[f'{M[i, j]:.2f}' for j in range(n2)] for i in range(n1)])
A[:, 3] = ''
fig, ax = plt.subplots(figsize = (6, 3))
sns.heatmap(ax = ax, data = M, annot = A)
plt.show()
这个错误的原因是什么?我怎样才能生成一个
seaborn.heatmap
并且只注释选定的行/列?