Проблема
У меня есть график, который я пытаюсь построить для трендов количества осадков по всему миру, используя данные с привязкой к сетке. Я могу сделать сам сюжет прекрасным, но цветовая гамма вызывает у меня проблемы. Я не могу понять, как сделать цветовую карту лучше соответствующей моим данным, которые кажутся экспоненциальными. Я попробовал логарифмический диапазон, но он не совсем соответствует данным.
Код и диапазон данных
Вот как выглядят мои 8 192 значения данных, когда они нанесены по порядку на простой линейный график 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)
А вот как это выглядит с неизмененным цветовым диапазоном по умолчанию. (Тот же код, но без аргумента norm=norm.)
Вопрос
Есть ли математическая схема, которую я могу использовать для создания цветовой карты, которая лучше показывает диапазон моих данных? Или мне нужно сделать собственный диапазон?
PowerNorm
вместоLogNorm
для того, что вы хотите показать. - person cel   schedule 29.07.2016