You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除matshow二维图的NaN值并将标签格式化为百分比

解决方案

你需要对现有代码做两处核心修改,分别处理NaN值渲染和百分比格式化需求:

  • 针对NaN值显示纯白:复制目标色阶后调用set_bad()方法,将缺失值的渲染色指定为纯白色
  • 针对百分比格式化:先判断值是否为NaN,非空值按百分比格式输出,NaN值跳过文本渲染

修改后完整代码

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

filename = "data.csv"

df = pd.read_csv(filename, header=None)

fig, ax = plt.subplots()
# 复制色卡并设置NaN值渲染为白色
cmap = plt.cm.get_cmap('bwr').copy()
cmap.set_bad(color='white')
ax.matshow(df, cmap=cmap)

for (i, j), z in np.ndenumerate(df):
    # 跳过NaN值的文本渲染
    if pd.isna(z):
        continue
    # 格式化为百分比,若原始数据已为百分比数值可去掉*100
    ax.text(j, i, '{:0.1f}%'.format(z * 100), ha='center', va='center',
            bbox=dict(boxstyle='round', facecolor='white', edgecolor='0.3'))

plt.show()

补充说明

如果你的原始数据本身已经是百分比格式(比如数值10对应10%),只需要把格式化代码中的*100删除即可正常显示。

内容的提问来源于stack exchange,提问作者MUD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:27:00