KwestiaPython - jaki schemat mapy powinienem używać dla danych wykładniczych?
mam działkę próbuję zrobić za trendami stóp opadowych z całego świata na podstawie danych z siatką. Mogę sprawić, że fabuła będzie dobrze, ale zakres kolorów daje mi problemy. Nie mogę wymyślić, jak sprawić, by colormap lepiej pasował do moich danych, co wydaje się być wykładnicze. Wypróbowałem zakres logarytmiczny, ale nie pasuje on do danych.
Kod & zakres danych
Oto co moi 8192 wartości danych wyglądać, gdy wykreślane w kolejności na prostej x-y linii działki. Punkty danych znajdują się na osi X & wartości są na osi Y.
Oto, jak moje dane wyglądają jak wykreślone z gamą kolorów LogNormal. Zbyt dużo miętowej zieleni jest dla mnie pomarańczowo-czerwone.
#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)
A oto jak to wygląda z domyślnie niezmieniony zakres kolorów. (Ten sam kod minus normą = argumentem normą.)
Pytanie
Czy istnieje matematyczny schemat można używać do tworzenia colormap że lepiej pokazuje zakres moich danych? Czy muszę zrobić niestandardowy zakres?
Więc jeśli to kolory, których nie lubisz, możesz wybrać inną mapę kolorów. Oto lista możliwych map kolorów. http://matplotlib.org/examples/color/colormaps_reference.html. Możesz również chcieć sprawdzić, czy 'PowerNorm' w wersji' LogNorm' jest lepszy dla tego, co chcesz pokazać. – cel
To nie tyle same kolory, co zakres. Gdybym mógł zdobyć więcej błękitów, cyjanów i żółci, aby pokazać się na mapie, byłbym szczęśliwy. W każdym razie, grałem wcześniej z PowerNormem i nie działało, ale spróbowałem go ponownie i po ustawieniu vmax = 3, teraz wygląda na bardziej równomierny, choć trochę ciężki na ciemnym błękicie dla wszystkich zero wartości. (Niewiele mogę z tym zrobić.) Napisz to jako odpowiedź, a ja to zaakceptuję. – ChristineB
W powiązanej notatce: [proszę nie używać mapy kolorów] (http://stats.stackexchange.com/questions/223315/why-use-colormap-viridis-over-jet). Ponieważ żółta część mapy kolorów jest jaśniejsza niż czerwone lub niebieskie części, zwraca uwagę na środkowe wartości twojej tablicy, które są najmniej interesujące z punktu widzenia wizualizacji danych. Istnieje [dużo bardziej odpowiednich colormapsów] (http://matplotlib.org/users/colormaps.html), które pomogą twoim działkom wyglądać lepiej :). – Andreq