問題Python-指数関数データにはどのようなカラーマップスキームを使用しますか?
私はグリッドデータを使用して、世界中の降水率の傾向を作るしようとしているプロットを持っています。私はプロット自体を上手くすることができますが、色の範囲は私に問題を与えています。カラーマップを指数関数的に見せる私のデータにどのようにフィットさせるかを理解することはできません。 私は対数範囲を試しましたが、データにはあまり合いません。
コード&データ範囲
は、ここに私の8192個のデータ値は、単純なX-Yラインプロット上に順にプロットした場合のように見えるものです。データ点はx軸にあります&値はy軸上にあります。
私のデータは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)
そして、ここではそれがデフォルトで、変更されていない色の範囲を持つようになります。 (同じコードマイナス規範=ノルム引数。)
質問
は、私はより良い自分のデータの範囲を示してカラーマップを作成するために使用できる数学的な仕組みはありますか?それともカスタムレンジを作る必要がありますか?
あなたが気に入らない色であれば、別のカラーマップを選択することができます。可能なカラーマップの一覧を示します。 http://matplotlib.org/examples/color/colormaps_reference.html。あなたは 'LogNorm'の代わりに' PowerNorm'があなたが見せたいものの方が良いかどうかを調べたいかもしれません。 – cel
それは色そのものではなく、範囲です。地図上に青、シアン、黄色が表示されれば嬉しいです。 私は以前PowerNormで遊んでいましたが、うまくいきませんでしたが、もう一度試しましたが、vmax = 3に設定した後は、暗いブルースで少し重いですが、ゼロ値。 (それについてはあまりできません。)これを回答として投稿し、私はそれを受け入れます。 – ChristineB
関連する注記:[ジェットカラーマップを使用しないでください](http://stats.stackexchange.com/questions/223315/why-use-colormap-viridis-over-jet)カラーマップの黄色の部分は赤色または青色の部分よりも明るいため、配列の中央値に注意を払います。これは、データ視覚化の観点から最も興味深いものです。あなたのプロットの見栄えを良くするのに役立つ[もっと多くの適切なカラーマップ](http://matplotlib.org/users/colormaps.html)があります:)。 – Andreq