繁体   English   中英

PyPlot ColorMesh 创建带有错误颜色映射的绘图

[英]PyPlot ColorMesh creates plot with wrong color mapping

我尝试以这种方式使用 xy 坐标和颜色图创建颜色网格图:

from matplotlib.colors import ListedColormap
import numpy as np
%pylab inline

colors = ListedColormap(['red', 'blue', 'yellow'])
xx,yy = np.meshgrid(np.arange(1, 6, 1), np.arange(1, 6, 1))
zz = np.array([[1,1,1,1,1],
               [1,1,1,1,1],
               [1,1,1,1,1],
               [2,2,0,0,0],
               [2,2,0,0,0]])
pyplot.pcolormesh(xx, yy, zz, cmap = colors)

当有三种颜色的列表时它工作正常,并且我尝试将 xy 点映射到所有这些颜色(如上面的代码中):

在此处输入图片说明

但是当有一个包含三种颜色的列表时,我尝试只将点映射到其中的两个,映射就会出错:

zz = np.array([[1,1,1,1,1],
               [1,1,1,1,1],
               [1,1,1,1,1],
               [0,0,0,0,0],
               [0,0,0,0,0]])
pyplot.pcolormesh(xx, yy, zz, cmap = colors)

在此处输入图片说明

它应该映射到颜色 0(红色)和 1(蓝色),但我得到了 0(红色)和2(黄色)颜色的图。 错误在哪里?

颜色图在 0 和 1 之间归一化。当它们在绘图中使用时,归一化将转移到数据的最小值和最大值。 如果 0 和 1 是最小值和最大值,则 0 将是地图的第一种颜色(红色),1 将是最后一种颜色(黄色)。

您需要的是将所需的颜色图行为考虑在内的标准化。 最简单的选择是使用vminvmax

zz = np.array([[1,1,1,1,1],
               [1,1,1,1,1],
               [1,1,1,1,1],
               [0,0,0,0,0],
               [0,0,0,0,0]])
plt.pcolormesh(xx, yy, zz, cmap = colors, vmin=0,vmax=colors.N)

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM