最初に、2つの異なるパラメータを同時に視覚化したい場合は、2つの異なるチャネル(赤と緑など)を割り当てることで可能です。これは、2つの2次元配列を正規化して、this answerと同様に積み重ねられたimshow
に供給することによって行うことができます。
あなたは正方形の2Dカラーマップとコンテンツであれば、あなたは、あなたが再びスタックとimshow
に餌meshgrid
を作成することによって、同じように、このカラーマップを取得することができます:
from matplotlib import pyplot as plt
import numpy as np
##generating some data
x,y = np.meshgrid(
np.linspace(0,1,100),
np.linspace(0,1,100),
)
directions = (np.sin(2*np.pi*x)*np.cos(2*np.pi*y)+1)*np.pi
magnitude = np.exp(-(x*x+y*y))
##normalize data:
def normalize(M):
return (M-np.min(M))/(np.max(M)-np.min(M))
d_norm = normalize(directions)
m_norm = normalize(magnitude)
fig,(plot_ax, bar_ax) = plt.subplots(nrows=1,ncols=2,figsize=(8,4))
plot_ax.imshow(
np.dstack((d_norm,m_norm, np.zeros_like(directions))),
aspect = 'auto',
extent = (0,100,0,100),
)
bar_ax.imshow(
np.dstack((x, y, np.zeros_like(x))),
extent = (
np.min(directions),np.max(directions),
np.min(magnitude),np.max(magnitude),
),
aspect = 'auto',
origin = 'lower',
)
bar_ax.set_xlabel('direction')
bar_ax.set_ylabel('magnitude')
plt.show()
結果を同じことがまた、極性Axes
でなんとかする必要があります原則として
が、this github ticketにコメントによると、0:次のようになりますは極軸をサポートしていないため、imshow
をディスク全体に書き込むことができませんでした。
EDIT:
ImportanceOfBeingErnestのおかげで、別の質問へのhis answer(color
キーワードはそれをしなかった)、今ここpcolormesh
を使用して極軸上の2Dカラーマップ。
:これは、この図を生成
fig= plt.figure(figsize=(8,4))
plot_ax = fig.add_subplot(121)
bar_ax = fig.add_subplot(122, projection = 'polar')
plot_ax.imshow(
np.dstack((d_norm,m_norm, np.zeros_like(directions))),
aspect = 'auto',
extent = (0,100,0,100),
)
theta, R = np.meshgrid(
np.linspace(0,2*np.pi,100),
np.linspace(0,1,100),
)
t,r = np.meshgrid(
np.linspace(0,1,99),
np.linspace(0,1,100),
)
image = np.dstack((t, r, np.zeros_like(r)))
color = image.reshape((image.shape[0]*image.shape[1],image.shape[2]))
bar_ax.pcolormesh(
theta,R,
np.zeros_like(R),
color = color,
)
bar_ax.set_xticks(np.linspace(0,2*np.pi,5)[:-1])
bar_ax.set_xticklabels(
['{:.2}'.format(i) for i in np.linspace(np.min(directions),np.max(directions),5)[:-1]]
)
bar_ax.set_yticks(np.linspace(0,1,5))
bar_ax.set_yticklabels(
['{:.2}'.format(i) for i in np.linspace(np.min(magnitude),np.max(magnitude),5)]
)
bar_ax.grid('off')
plt.show()
:最も注目すべきいくつかの注意点がありました、colors
の寸法は、それ以外のカラーマップは、螺旋状を持って、meshgrid
theta
内方向よりも1小さくする必要があります
最初の部分と同様の回答[ここ](https://stackoverflow.com/a/41967868/4124317)。極軸に関しては、 '' pcolormesh''はうまくいくはずです。 – ImportanceOfBeingErnest
@ImportanceOfBeingErnest申し訳ありませんが、私はその答えに気付かず、重複としてマークしています。私は 'pcolormesh'を試みましたが、マトリックスの大きさについて苦情を言いました(2Dのみが許可されています)。私が持っていた別のアイデアは 'alpha = 0.5'を使うことでしたが、それはあまり良く見えませんでした。 –
他の答えは極プロットについて尋ねなかった。だから私たちはこれを開いたままにすることができます。pcolormeshの問題は[この回答](https://stackoverflow.com/a/45264011/4124317)の最後の部分のように配列をnone '.set_array(None) 'に設定することで解決できますか? – ImportanceOfBeingErnest