2016-07-29 4 views
5

문제 내가 리딩 된 데이터를 사용하여 전 세계의 침전 속도의 추세를 만들려고 음모를파이썬 - 지수 데이터를 위해 어떤 컬러 맵 스키마를 사용해야합니까?

. 음모 자체는 훌륭하게 만들 수 있지만 색상 범위가 문제를주고 있습니다. 기하 급수적으로 보이는 내 데이터에 더 잘 맞는 색상 표를 만드는 방법을 알 수 없습니다. 로그 범위를 시도했지만 데이터가 맞지 않습니다.

코드 & 데이터 범위

은 여기 내 8,192 데이터 값은 간단한 X-Y 선 그림에 순서대로 그려 때처럼 보일거야. 데이터 포인트는 x 축에 있으며 & 값은 y 축에 있습니다. enter image description here

내 데이터는 LogNormal 색상 범위로 플롯되어 있습니다. 그것은 나를 위해 너무 많은 민트 녹색 & 주황색이다.

enter image description here

#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

질문

은 내가 더 잘 내 데이터의 범위를 표시하는 색상 맵을 만드는 데 사용할 수있는 수학적 기법이 있습니까? 아니면 맞춤 범위를 만들어야합니까?

+2

그래서 마음에 들지 않는 색상이라면 다른 색상 맵을 선택할 수 있습니다. 가능한 색상 맵 목록은 다음과 같습니다. http://matplotlib.org/examples/color/colormaps_reference.html. 'LogNorm' 대신에'PowerNorm'이 당신이 보여주고 자하는 것을 위해 더 나은지를 확인하기를 원할 수도 있습니다. – cel

+0

범위만큼이나 색상 자체가 그다지 중요하지 않습니다. 지도에 더 많은 블루스, 시안 색, 노란색이 나타날 수 있다면 행복 할 것입니다. 어쨌든, 이전에 PowerNorm을 가지고 놀았지만 작동하지 않는 것 같았습니다.하지만 다시 시도해 보았습니다. vmax = 3으로 설정 한 후에는 이제는 어두운 파란색 부분이 약간 짙었지만 제로 값. (별로 할 수있는 일은 아닙니다.) 답으로 게시하고 받아 들일 것입니다. – ChristineB

+0

관련 메모 : [jet colormap을 사용하지 마십시오.] (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

관련 문제