用一堆不同颜色的二维数组绘制pcolormesh

问题描述 投票:1回答:2

这是我的问题

抱歉表达困惑。

只需检查我的更新。更清楚了。

1。简介

  • 3-d numpy数组“ data”,其形状为(10,31,37)。
  • 第一维10是二维数组的数量
  • [最后2个数组代表2维区域的某些网格值,其值为0和1

它显示如下:

### mask the value 0 of data[1,:,:]
data_mask = np.ma.masked_less(data[[1,:,:],0.001)
pc =plt.pcolor(xx,yy,data_mask[i,:,:],alpha =1,facecolor = "pink",edgecolor = 'steelblue',zorder =3)
## plotting the grid line
mesh =plt.pcolor(xx,yy,data[1,:,:],cmap="gray",alpha =0.45,facecolor = "none",edgecolor = 'k')       

Sorry, China don't allow me using imgur(来源:tietuku.com

2。我的尝试

  • 在一个图中用不同的颜色绘制每个二维数组
  • [如果可以用其他颜色(如维恩图)或填充类型(“阴影线”)绘制横截面部分,:

(来源:tietuku.com

3。我的代码

例如两个二维数组。(来源:tietuku.com

cs=plt.cm.jet(np.arange(2)/2.)     
for i in range(0,2,1):
    data_mask = np.ma.masked_less(data[i,:,:],0.001)
    plt.pcolor(xx,yy, data_mask[i,:,:],alpha =0.95,facecolor = cs[i],edgecolor = 'k',zorder =3)      

结果(来源:tietuku.com

这些数字似乎都表明颜色设置错误。

4。我的问题

  1. 如何设置pcolor网格颜色?在我的示例中,使用facecolor =无效。而且我知道使用cmap = plt.cm.xxx可以工作(下图)。但是我必须分别绘制这两个二维数组。

(来源:tietuku.com

  1. 正如我在'我的尝试2']中所说的那样,有没有一种方法可以验证重叠并以某种巧妙的方式标记这些网格。

我能弄清楚的是生成另一个名为'overlap'的np.array并保存每个网格的信息

for i in range(0,data.shape[1],1):
    for j in range(0,dat.shape[2],1):
        if (data[0,i,j] == 1) & (data[1,i,j] == 1.0):
            overlap[i,j] = 1       

当有两个以上的二维数组时,此方法无法解决。

更新-2016-01-17

我将问题总结为一个数字,并生成了它的代码:

cover_mask = np.ma.masked_less(data[0,:,:],0.001)
plt.pcolor(xx,yy,data_mask[0,:,:],cmap = plt.cm.Set1,alpha =0.75,\
           edgecolor = 'k',zorder =3)      

cover_mask = np.ma.masked_less(cov[1,:,:],0.001)       
plt.pcolor(xx,yy,cover_mask[1,:,:],cmap = plt.cm.Set2,alpha =0.75,\
           edgecolor = 'k',zorder =3)          

http://i4.tietuku.com/1d47a3410417cd4f.png

我的问题
  1. 在上面的代码中,我分别绘制了二维数组。如果可以使用facecolor = 'cs[i]'cs=plt.cm.xxx(np.arange(2)/2.)设置网格颜色,则可以循环所有数据[0:10,:,:]。但是我只能使用cmap = xxx来改变每个数组的颜色。 我不知道如何循环显示颜色图。

  • 在上图中,红色网格和绿色网格重叠。为了获得更好的可视化效果,我想标记这些重叠的网格。

  • 想法1

    • 每个二维网格具有不同的颜色,并且所有重叠区域共享相同的颜色(在我的情况下,需要11种颜色)
    • 想法2

    将重叠的网格标记为'X'或类似下图所示的内容。

    (来源:tietuku.com

    添加

    基于此post,似乎'pcolor / pcolormesh'不具有设置hatch = '* '的功能。

    这是我的问题,对不起,我很困惑。只要检查我的更新。更清楚了。 1.导入形状为(10,31,37)的3-d numpy数组“数据”。第一维10是...

    python arrays numpy matplotlib matplotlib-basemap
    2个回答
    1
    投票

    免责声明:我以前没有使用过numpy的颜色图。


    1
    投票

    如果只想将重叠单元设置为一种颜色,则以下代码有效:

    © www.soinside.com 2019 - 2024. All rights reserved.