python - 向热图中的特定单元格添加注释
问题描述
我正在绘制一个 seaborn 热图,并且只想用自定义文本注释特定的单元格。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from io import StringIO
data = StringIO(u'''75,83,41,47,19
51,24,100,0,58
12,94,63,91,7
34,13,86,41,77''')
labels = StringIO(u'''7,8,4,,1
5,2,,2,8
1,,6,,7
3,1,,4,7''')
data = pd.read_csv(data, header=None)
data = data.apply(pd.to_numeric)
labels = pd.read_csv(labels, header=None)
#labels = np.ma.masked_invalid(labels)
fig, ax = plt.subplots()
sns.heatmap(data, annot=labels, ax=ax, vmin=0, vmax=100)
plt.show()
上面的代码生成以下热图:
注释行生成以下热图:
我只想在单元格上显示非 nan(或非零)文本。怎样才能做到这一点?
解决方案
为了补充@mrzo的答案,您可以使用na_filter=False
inread_csv()
将nan
s 存储为空字符串,并使用它就pandas.DataFrame.astype()
地转换为字符串:
# ...
labels = pd.read_csv(labels, header=None, na_filter=False).astype(str)
sns.heatmap(data, annot=labels, fmt='s', ax=ax, vmin=0, vmax=100)
推荐阅读
- java - Java 11 - Replace Spring @PostConstruct with afterPropertiesSet or using initMethod
- delphi - 如何将 LPARAM 转换为 Delphi 中的结构?
- html - 如何修复 css 在小屏幕上有两列?
- sql - 存储过程 SQL-Server 存在问题
- azure - 无法访问 azure kubernetes 的服务
- python - 从嵌套字典中获取重复项
- react-native - 如何在 StackNavigator 标题下方设置 TabNavigator 图标?
- solr - DSE如何传播数据?
- python - 使用正则表达式和python排列文本文件输出regex.sub
- android - 处理程序 postdelayed 不到 10 毫秒不受影响