2014-09-29 2 views
0

아래 그림과 같습니다. 현재 figure의 colorscheme은 colormap (mpl.cm.Paired)의 전체 범위를 사용합니다. 내가하고 싶은데 알아낼 수 없었던 것은 matplotlib가 칼라 맵의 서브셋만을 사용하도록 제한하는 것입니다. 이 경우 시작 색상을 어두운 파란색 음영으로 만들려고합니다. 정규화 된 범위의 하위 집합의 기능 mpl.cm.Paired()를 호출하는 것 (즉, [0-1]) 다음을이 작업을 수행하는matplotlib 색상 맵에서 시작 색상 선택

Figure = plt.figure(figsize=(22,10)) 
Map = Basemap(projection='robin', lon_0=0, resolution='l') 
x, y = Map(LONS, LATS) 
levels = np.arange(0, 4100, 100) 
fcp = Map.contourf(x, y, data, levels, interpolation="bicubic", cmap=mpl.cm.Paired) 

cb = Map.colorbar(fcp, "bottom", size="5%", pad='5%', extendrect=False) 
cb.ax.tick_params(labelsize=18) 
cb.solids.set_edgecolor("face") 
cb.set_label("metres",fontsize=18) 
cb.ax.set_aspect(0.047) 

Map.drawcoastlines(linewidth=1) 
Map.drawmapboundary(linewidth=1) 
Map.drawmeridians([-150,-100,-50,0,50,100, 150],labels=[1,1,1,0],fontsize=18) 
Map.drawparallels([-60,-30,0,30,60],labels=[1,1,1,1],fontsize=18) 

enter image description here

+0

그것은 단지이 하나의 기존 기반으로 새'colormap'을 만들 아마 가장 쉬운 방법. –

+0

'블루스'색상 표를 사용하지 않는 이유는 무엇입니까? '페어 '는 정말 부적합하다. – mwaskom

+0

@mwaskom 컬러 맵의 선택은 항상 과학자들 사이에서 열정적 인 토론의 주제이지만, 필자의 질문은 필연적으로이 그림과 관련이있는 것은 아닙니다. – deepak

답변

7

한 가지 방법 : 여기 내 코드의 플로팅 섹션입니다 당신은 색상 맵에 내장에서 원하는 시작 색상을 얻기 위해 그 linspace0.1 값에 대한 바이올린해야합니다

import matplotlib.colors as mcol 

lvTmp = np.linspace(0.1,1.0,len(levels)-1) 
cmTmp = mlp.cm.Paired(lvTmp) 
newCmap = mcol.ListedColormap(cmTmp) 

: 그것은 새로운 색상 맵을 정의하기 위해 반환 색상의 목록을 사용합니다.

enter image description here

+0

우수! 이게 완벽하게 작동합니다. 그렇게 쉬울 것이라고 상상할 수 없었습니다! – deepak

+0

컬러 맵과 노말 라이저 주변에서 머리를 얻으면 많은 것들을 할 수 있습니다. 언제나 그렇듯이, 어려운 부분은 적절하게 색상을 사용하고 있습니다. – Deditos