Jai*_*man 3 python mapping grid colors matplotlib
我是 pyplot 的新手,无法找到将数组映射到彩色网格的合适解决方案。例如,如果我有一个 10x10 二维数组和 10x10 网格:
[[0,0,0,0,0,1,1,1,1,0],
[0,0,0,0,0,1,0,0,1,0],
[0,0,1,0,1,0,1,1,0,0],
[0,0,1,0,0,1,1,0,1,0],
[0,0,1,0,1,0,0,1,1,0],
[1,0,0,1,0,1,0,0,1,0],
[0,1,0,0,0,1,1,1,1,1],
[0,1,0,0,0,0,1,1,1,1],
[1,0,0,0,1,1,1,0,1,0],
[1,1,1,1,0,0,0,1,1,0]]
Run Code Online (Sandbox Code Playgroud)
如果 0 和 1 分别是蓝色和红色,则网格应如下所示:
我怎样才能用 pyplot 做到这一点?
是的,您可以为此使用imshow
[matplotlib-doc]:
data = [
[0,0,0,0,0,1,1,1,1,0],
[0,0,0,0,0,1,0,0,1,0],
[0,0,1,0,1,0,1,1,0,0],
[0,0,1,0,0,1,1,0,1,0],
[0,0,1,0,1,0,0,1,1,0],
[1,0,0,1,0,1,0,0,1,0],
[0,1,0,0,0,1,1,1,1,1],
[0,1,0,0,0,0,1,1,1,1],
[1,0,0,0,1,1,1,0,1,0],
[1,1,1,1,0,0,0,1,1,0]
]
import matplotlib.pyplot as plt
plt.imshow(data)
plt.show()
Run Code Online (Sandbox Code Playgroud)
因此,您只需将 2d-list 传递给imshow()
,这将生成以下图像:
正如文件中规定,你可以用另一种颜色映射到使用其他颜色0
和1
,例如:
plt.imshow(data, cmap=plt.cm.bwr)
Run Code Online (Sandbox Code Playgroud)
将产生相同的数据,但具有蓝白红颜色图:
您需要的适当功能是pcolor
:
from matplotlib import pyplot as plt
from matplotlib import colors
cmap = colors.ListedColormap(['Blue','red'])
plt.figure(figsize=(6,6))
plt.pcolor(data[::-1],cmap=cmap,edgecolors='k', linewidths=3)
plt.show()
Run Code Online (Sandbox Code Playgroud)
或者:
cmap = colors.ListedColormap(['Blue','red'])
plt.figure(figsize=(6,6))
plt.pcolor(data[::-1],cmap=cmap,edgecolors='k', linewidths=3)
plt.xticks(np.arange(0.5,10.5,step=1))
plt.yticks(np.arange(0.5,10.5,step=1))
plt.show()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10919 次 |
最近记录: |