Затенить значения фигуры в массиве A с заливкой, где значения в массиве B превышают определенное значение - PullRequest
0 голосов
/ 07 июня 2019

Я строю значения элементов массива A, но я хотел бы закрасить элементы в A, где соответствующий элемент в массиве B превышает определенное значение (здесь: 6).Как я могу это сделать?В моем примере, приведенном ниже, я строю массив A в верхней части графика и массив B в середине.В нижнем графике элементы в массиве A, которые соответствуют элементам> 6 в массиве B, должны быть закрашены.Но это не то, как получается подзаговор с.

# Create the fake data
a = np.random.randint(10, size=11)
b = np.random.randint(10, size=11)

A = np.zeros([11,9])
B = np.zeros([11,9])

for n in np.arange(4):
    A[:,n+2] = a.copy()
    B[:,n+2] = b.copy()

X_array = np.arange(9)
Y_array = np.arange(11)

# Plot the arrays
my_cmap = cm.jet
my_bounds =  np.arange(10)
my_norm = mpl.colors.BoundaryNorm(my_bounds, my_cmap.N)

fig, axes = plt.subplots(nrows=3, ncols=1, figsize=(9, 9))
x, y = np.meshgrid(X_array, Y_array)
axes[0].pcolor(x, y, A, cmap=my_cmap, norm=my_norm)
img = axes[0].pcolor(x, y, A, cmap=my_cmap, norm=my_norm)
axes[0].set_title('a) Array A', fontsize=10)

x, y = np.meshgrid(X_array, Y_array)
axes[1].pcolor(x, y, B, cmap=my_cmap, norm=my_norm)
axes[1].set_title('b) Array B', fontsize=10)

x, y = np.meshgrid(X_array, Y_array)
axes[2].pcolor(x, y, A, cmap=my_cmap, norm=my_norm)
axes[2].fill(A[B > 6], 'white', alpha=0.8)
axes[2].set_title('c) Shade A where B > 6', fontsize=10)
plt.subplots_adjust(bottom=0.12, hspace=0.05, wspace=0.05)
colorbar_ax = fig.add_axes([0.125, 0.055, 0.77, 0.015])
fig.colorbar(img, cax=colorbar_ax, orientation="horizontal")
plt.show()
...