2017-02-08 17 views
2

およびplt.contourと同じ色度にすることは可能ですか?同色の散布プロットおよび等高線プロット

enter image description here

は私が

cs2=m[1].contourf(x,y,areaData,cmap=cs.cmap) 
を使用し、

cs=m[0].scatter(xs,ys,c=obsData,cmap=plt.cm.jet) 
m.colorbar(cs) 

が第二サブプロットを作るために使用し、最初のサブプロットを作るために:たとえば、私はこのようなプロットを行うコードを持っています

各サブプロットについては、

m[ind].contourf(x,y,areaData,cmap=cs.cmap,levels=cs2.levels 

ここで、areaDataはループ内で再計算されます。

私の質問は、最初のサブプロットを他のサブプロットと同じ色にするにはどうすればいいですか?私はlevels=cs2.levelsキーワード引数に相当するものを探しています。

+0

散布図は 'obsData'で色付けされていますが、輪郭プロットは' areaData'で色付けされています。散布図には8以上の値があり、等高線の値は7以下です。これらのデータは同じデータセットに対応していますか?さもなければ、両方のために同じカラーマップを強制するのは意味がありません。何か不足していますか? –

+0

これらは同じデータセットに含まれているわけではありません。実際、サブプロットは同じデータセットのものではありません。その違いにもかかわらず、obsDataはシミュレーションからの誤差データであり、areaDataはシミュレーションから変化する要因までの不確実性を含むデータです。私は誤差を不確実性と比較したいが、正しく行うには均一な着色が必要である。 – BarocliniCplusplus

答えて

1

コメントに記載されているように、散布図と等高線データは直接関係はありませんが、同じカラーマップ上に表示する必要があります。

両方のデータセットを含む共通の色範囲を設定することをお勧めします。 obsDataスキャッタ点及び輪郭にareaDataを意味するので、私は

vmin,vmax = (fun(np.concatenate([obsData,areaData])) for fun in (np.min,np.max)) 

が収集されたデータセットのスパンを決定するために設定したい(当然、複数の入力データセットに対して一般化することができます)。これらは、カラーマッピングの制限を設定するscattercontourfに渡すことができます。

cs = m[0].scatter(xs,ys,c=obsData,cmap=plt.cm.viridis,vmin=vmin,vmax=vmax) 
cs2 = m[1].contourf(x,y,areaData,cmap=cs.cmap,vmin=vmin,vmax=vmax) 

スパンのいくつかの手動増加はかなりの結果を得るためにあるかもしれません。

カラーマップをviridisに変更しました。あなたが本当にあなたのデータを公正に表現したいのであれば、this should be your first step

関連する問題