Python - 根据值绘制彩色网格

phi*_*pos 12 python grid plot colors matplotlib

我一直在这里和网上搜索.我发现了某些我想要的问题/答案,但仍无法达到我想要的目的.

我有一个例如10​​0个值的数组.值在0到100的范围内.我想将此数组绘制为网格,根据数组中的值填充正方形.

到目前为止我找到的解决方案如下:

在matplotlib中绘制网格图案

自定义matplotlib图:棋盘像彩色单元格的表

在我提到的例子中,颜色的范围变化并且不固定.

但是,我想知道的是,我是否可以设置特定值和颜色的范围.例如,如果值介于10和20之间,则让网格方块的颜色为红色.否则如果值在20到30之间,则让颜色为蓝色.等等

如何在python中实现这一目标?

umu*_*tto 16

您可以为自定义颜色创建ListedColormap,并为BoundaryNorms设置颜色以限制值.

import matplotlib.pyplot as plt
from matplotlib import colors
import numpy as np

data = np.random.rand(10, 10) * 20

# create discrete colormap
cmap = colors.ListedColormap(['red', 'blue'])
bounds = [0,10,20]
norm = colors.BoundaryNorm(bounds, cmap.N)

fig, ax = plt.subplots()
ax.imshow(data, cmap=cmap, norm=norm)

# draw gridlines
ax.grid(which='major', axis='both', linestyle='-', color='k', linewidth=2)
ax.set_xticks(np.arange(-.5, 10, 1));
ax.set_yticks(np.arange(-.5, 10, 1));

plt.show()
Run Code Online (Sandbox Code Playgroud)

导致; 用BoundaryNorms绘图

有关更多信息,请查看此matplotlib示例.