3

2 つの 2D 配列があり、それぞれがマップ上のプロパティを表しています。それらの 1 つは雹の確率 (0% ~ 100%) を表し、もう 1 つは雹の重大度 (0 - 雹なし、1 - 低、2 - 中、3 - 高) を表します。

この配列は、matplotlibimshowと定義済みのカラーマップを使用して個別にプロットできます。

import matplotlib.pyplot as plt
import matplotlib.colors as cl

cmap = cl.ListedColormap(['#00FF00', '#FFFF00', '#FF0000'])
bounds = [0, 30, 60, 100]
norm = cl.BoundaryNorm(bounds, cmap.N)

plt.subplot(121)
plt.imshow(hail_prob, cmap=cmap, norm=norm)

cmap = cl.ListedColormap(['#00FF00', '#FFFF00', '#FF0000'])
bounds = [0.5, 1.5, 2.5, 3.5]
norm = cl.BoundaryNorm(bounds, cmap.N)

plt.subplot(122)
plt.imshow(hail_sev, cmap=cmap, norm=norm)

上記のように、これは非常に簡単です。

ただし、両方の機能を組み合わせた独自のプロットが必要です。関数をテストしましたcontourが、データが非常に不規則で、プロットがかなり悪く見えます。

両方の特性を 1 つのカラーマップに結合することを考えていますが、その方法についてはよくわかりません。確率と重大度の組み合わせごとに色が必要だとしましょう。

これを行う方法についてのアイデアはありますか?

4

2 に答える 2

2

色が1つの値で、サイズが別の散布図を作成します。たとえば、色は確率ですが、サイズは強度になります。

ここにいくつかのランダムデータがあります

hail_prob = np.random.rand(48, 64)
hail_sev = np.random.randint(0,4,hail_sev.shape)

ここでは、既存のデータから xy ポイントを取得np.meshgridし、散布図で使用できます。

x = np.arange(hail_prob.shape[1])
y = np.arange(hail_prob.shape[0])
xy = np.meshgrid(x,y)
scatter(*xy, c=hail_prob, s=hail_sev)

単位が適切なピクセル サイズとは異なるため、サイズの正規化を微調整する必要があります。

ランダムなサイズと色

または、より興味深い形状の場合: 他の形

于 2013-09-13T14:00:44.847 に答える