小编lth*_*ner的帖子

matplotlib 颜色图:set_bad 对集合没有影响

我想使用 matplotlib 颜色图的 set_bad 参数为 nan 值分配特定颜色。我创建了一个颜色图:

from matplotlib.colors import ListedColormap, BoundaryNorm

cmap = ListedColormap(['green', 'yellow', 'red'])
norm = BoundaryNorm([0, 20, 70, 100], cmap.N)
Run Code Online (Sandbox Code Playgroud)

然后我将坏颜色设置为黑色:

cmap.set_bad(color="k")
Run Code Online (Sandbox Code Playgroud)

为了验证一切按预期工作,我绘制了一个数组作为测试,并且它有效(左下象限是黑色):

import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
im = ax.imshow(np.array([[10, 50], [np.nan, 70]]), cmap=cmap, norm=norm)
fig.colorbar(im, ax=ax)
Run Code Online (Sandbox Code Playgroud)

但是,如果我在集合上使用相同的颜色图,则它不起作用:

from matplotlib.collections import LineCollection
lc = LineCollection(([(0.1, 0.1), (0.1, 0.2)], [(0.2, .2), (0.2, .3)], [(0.3, .3), (0.3, .4)]))

lc.set_cmap(cmap)
lc.set_norm(norm)
lc.set_array(np.array([10, np.nan, 80]))

fig, ax = plt.subplots()
ax.add_collection(lc)
plt.draw()
Run Code Online (Sandbox Code Playgroud)

中间的线有一个 …

python plot matplotlib colormap

5
推荐指数
1
解决办法
3665
查看次数

标签 统计

colormap ×1

matplotlib ×1

plot ×1

python ×1