2

2 つの numpy 配列があると仮定しましょう (ここに示した配列は単なる例です)。

import numpy as np
A = np.arange(144).reshape((12, 12))
np.random.shuffle(A)

B = np.ones((12,12))
B[0:10:4,:] = None

imshow を使用してAをプロットしたい:

import matplotlib.pyplot as mplt
mplt.imshow(A, cmap = mplt.gray())

なし領域が完全に透明になり、1 つの領域のアルファが (たとえば、アルファ = 0.3) になるように、Bをオーバーレイします。

私はすでに次の行に沿って何かを使用しようとしました:

mplt.imshow(B, cmap = mplt.get_cmap('Reds), alpha = 0.3)

しかし、それは機能しません。また、マスクされた配列を使用して B を作成しようとしましたが、理解できません。助言がありますか?

ありがとう

編集:

結局使ってしまった

my_red_cmap = mplt.cm.Reds
my_red_cmap.set_under(color="white", alpha="0")

これは魅力のように機能します(ビルのソリューションもテストしましたが、これも完全に機能します)。

4

2 に答える 2

2

次のことができます。

import numpy as np
import matplotlib.cm as cm
import matplotlib.pyplot as plt

x = np.arange(100).reshape(10, 10)
y = np.arange(-50, 150, 2).reshape(10, 10)
y[y<x] = -100 # Set bad values

cmap1 = cm.gray
cmap2 = cm.Reds
cmap2.set_under((1, 1, 1, 0))

params = {'interpolation': 'nearest'}
plt.imshow(x, cmap=cmap1, **params)
plt.show()

ここに画像の説明を入力

plt.imshow(y, cmap=cmap2, **params)
plt.show()

ここに画像の説明を入力

plt.imshow(x, cmap=cmap1, **params)
plt.imshow(y, cmap=cmap2, vmin=0, **params) # vmin > -100
plt.show()

ここに画像の説明を入力

于 2014-03-11T16:31:24.660 に答える