2016-07-29 5 views
5

問題Python-指数関数データにはどのようなカラーマップスキームを使用しますか?

私はグリッドデータを使用して、世界中の降水率の傾向を作るしようとしているプロットを持っています。私はプロット自体を上手くすることができますが、色の範囲は私に問題を与えています。カラーマップを指数関数的に見せる私のデータにどのようにフィットさせるかを理解することはできません。 私は対数範囲を試しましたが、データにはあまり合いません。

コード&データ範囲

は、ここに私の8192個のデータ値は、単純なX-Yラインプロット上に順にプロットした場合のように見えるものです。データ点はx軸にあります&値はy軸上にあります。 enter image description here

私のデータはLogNormalの色範囲でプロットされているようです。それはあまりにも多くのミントグリーン&私のためにオレンジ - 赤です。

#Set labels 
lonlabels = ['0','45E','90E','135E','180','135W','90W','45W','0'] 
latlabels = ['90S','60S','30S','Eq.','30N','60N','90N'] 

#Set cmap properties 
norm = colors.LogNorm() #creates logarithmic scale 

#Create basemap 
fig,ax = plt.subplots(figsize=(15.,10.)) 
m = Basemap(projection='cyl',llcrnrlat=-90,urcrnrlat=90,llcrnrlon=0,urcrnrlon=360.,lon_0=180.,resolution='c') 
m.drawcoastlines(linewidth=1) 
m.drawcountries(linewidth=1) 
m.drawparallels(np.arange(-90,90,30.),linewidth=0.3) 
m.drawmeridians(np.arange(-180.,180.,45.),linewidth=0.3) 
meshlon,meshlat = np.meshgrid(lon,lat) 
x,y = m(meshlon,meshlat) 

#Plot variables 
trend = m.pcolormesh(x,y,lintrends[:,:,0],cmap='jet', norm=norm, shading='gouraud') 

#Set plot properties 
#Colorbar 
cbar=m.colorbar(trend, size='8%',location='bottom',pad=0.8) #Set colorbar 
cbar.set_label(label='Linear Trend (mm/day/decade)',size=25) #Set label 
for t in cbar.ax.get_xticklabels(): 
    t.set_fontsize(25) #Set tick label sizes 
#Titles & labels 
fig.suptitle('Linear Trends of Precipitation (CanESM2)',fontsize=40,x=0.51,y=0.965) 
ax.set_title('a) 1979-2014 Minimum Trend',fontsize=35) 
ax.set_xticks(np.arange(0,405,45)) 
ax.set_xticklabels(lonlabels,fontsize=20) 
ax.set_ylabel('Latitude',fontsize=25) 
ax.set_yticks(np.arange(-90,120,30)) 
ax.set_yticklabels(latlabels,fontsize=20) 

enter image description here

そして、ここではそれがデフォルトで、変更されていない色の範囲を持つようになります。 (同じコードマイナス規範=ノルム引数。)

enter image description here

質問

は、私はより良い自分のデータの範囲を示してカラーマップを作成するために使用できる数学的な仕組みはありますか?それともカスタムレンジを作る必要がありますか?

+2

あなたが気に入らない色であれば、別のカラーマップを選択することができます。可能なカラーマップの一覧を示します。 http://matplotlib.org/examples/color/colormaps_reference.html。あなたは 'LogNorm'の代わりに' PowerNorm'があなたが見せたいものの方が良いかどうかを調べたいかもしれません。 – cel

+0

それは色そのものではなく、範囲です。地図上に青、シアン、黄色が表示されれば嬉しいです。 私は以前PowerNormで遊んでいましたが、うまくいきませんでしたが、もう一度試しましたが、vmax = 3に設定した後は、暗いブルースで少し重いですが、ゼロ値。 (それについてはあまりできません。)これを回答として投稿し、私はそれを受け入れます。 – ChristineB

+0

関連する注記:[ジェットカラーマップを使用しないでください](http://stats.stackexchange.com/questions/223315/why-use-colormap-viridis-over-jet)カラーマップの黄色の部分は赤色または青色の部分よりも明るいため、配列の中央値に注意を払います。これは、データ視覚化の観点から最も興味深いものです。あなたのプロットの見栄えを良くするのに役立つ[もっと多くの適切なカラーマップ](http://matplotlib.org/users/colormaps.html)があります:)。 – Andreq

答えて

0

Aは、あなたが次にあなたが2+と表す単一色(最大)を持っているだろう、単純に2

に置き換える、すなわち2以上の任意の値のために、最大値を適用しようとすることができ

をハック残りの色は、より均等にデータに広がります。

+0

私はそれを最終的にやっていましたが、私は正規化をPowerNormに切り替える必要がありました。 – ChristineB

関連する問題