问题描述
我一直在这里和网上搜索。我发现不知怎么接近我想要的问题/答案,但仍无法达到我正在寻找的目标。我有一个数组,例如100值。值在0到100之间。
我想将这个数组绘制为一个网格,根据数组中的值填充这些平方。
到目前为止,我发现的解决方案如下所示:
更多信息,可以查看。
I have been searching here and on the net. I found somehow close questions/answers to what I want, but still couldn't reach to what I'm looking for.
I have an array of for example, 100 values. The values are in the range from 0 to 100.I want to plot this array as a grid, filling the squares according to the values in the array.
The solutions I found so far are like the followings:
Drawing grid pattern in matplotlib
and
custom matplotlib plot : chess board like table with colored cells
In the examples I mentioned, the ranges of the colors vary and are not fixed.
However, what I am wondering about, is whether I can set the ranges for specific values and colors.For example,if the values are between 10 and 20, let the color of the grid square be red.else if the values are between 20 and 30, let the color be blue. etc.
How this could be achieved in python?
You can create a ListedColormap for your custom colors and color BoundaryNorms to threshold the values.
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()
Resulting in;
For more, you can check this matplotlib example.
这篇关于Python - 基于值绘制彩色网格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!