首页 > 解决方案 > 用 NaN 绘图。如何将 NaN 值设置为特定颜色和/或从热图中跳过 NaN

问题描述

我正在尝试使用补丁绘制热图。但是,数据包含 NaN,如果包含 NaN 值,则将所有颜色设置为最小值。如果我将 NaNs 设置为 0,则该图将正确显示。但我不希望将 NaN 设置为一个值,因为这具有误导性。理想情况下,我想跳过 NaN 值,如果不是至少将其设置为所需的颜色

我已确保使用 nanmin/nanmax 作为彩条以从比例中排除 NaN 值。

从 -2000:2000 绘制 400 个元素,我将索引值 200:250 设置为 NaN

上面的代码用于生成以下内容: https ://www.pastepic.xyz/images/2019/10/17/image9347fc65ec10705e.png

但是,包含 NaNS 会导致此 https://www.pastepic.xyz/images/2019/10/17/imagef0c34416d84b669d.png

标签: pythonmatplotlib

解决方案


嘿,我看不到你的代码,所以我假设你正在使用 numpy,然后我们可以像这样从数据中删除 nans,如果数据是一维的

x = x[~numpy.isnan(x)]

如果数据有 x 和 y,我们还可以使用掩码以下列方式移除 nan。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(10)
y = np.array([1, 4, 3, None, None, 5, 8, 9, 4, 7])
mask = np.isfinite(y)

然后 x 和 y 的数据变为

x = x[mask] 
y = y[mask]

让我知道它是如何为你工作的


推荐阅读