2014-05-11 2 views
1

파이썬에서베이스 맵을 사용하여 내 세계지도에 색을 추가하는 데 문제가 있습니다. 내가 국가 이름과 주파수, 예를 들어 와 목록을했습니다 :베이스 맵을 사용하여 국가에 색을 추가하는 방법

내가 세 가지 색상 (빨강, 노랑, 오렌지)와 년 Colorbar을 만든
Usa 304 
France 120 
Italy 23 
Spain 152 

. 노란색은 300-400의 영역을 나타내므로 미국의 주파수가 304 일 때 나는 노란색을 가지려고합니다.

from mpl_toolkits.basemap import Basemap 
import matplotlib.pyplot as plt 
import numpy as np 
from matplotlib import colors 

m = Basemap(projection='mill',llcrnrlat=-90,urcrnrlat=90,\ 
    llcrnrlon=-160,urcrnrlon=160,resolution='c') 

m.drawcoastlines() 
m.drawcountries(color='black') 
m.drawmapboundary(fill_color='aqua') 
m.fillcontinents(color='white',lake_color='aqua') 

#Colorbar 

zvals = np.random.rand(100, 100) * 10 

# make a color map of fixed colors 
cmap = colors.ListedColormap(['white','yellow','orange','red','purple']) 
bounds=[0,20,30,50,200, 400] 
norm = colors.BoundaryNorm(bounds, cmap.N) 

img = plt.imshow(zvals, interpolation='nearest', origin='lower', 
       cmap=cmap, norm=norm) 


plt.colorbar(img, cmap=cmap, norm=norm, boundaries=bounds, ticks=[0 ,20, 30, 50, 200, 400]) 


plt.title('Imdb Top250 feq countries') 
plt.show() 

제 질문은 국가 별 색상을 어떻게 조합합니까? 경도와 위도는 어떤가?

답변

0

는 당신이 필요로하는 것은 당신이 다음 readshapefile 메소드를 호출하여 기본 맵 인스턴스에 추가 할 수있는 실제 국가 경계의 모양 파일입니다 : 당신이하지 않은 경우

m.readshapefile("/path/to/your/shapefile", "countries") 

, 당신은 그것을 얻을 수 있습니다 예를 들어 GADM.

다음으로 셰이프 파일의 정보를 가지고있는 주파수의 데이터 세트와 연결하는 방법이 필요합니다. 위의 예제에서 수행 한대로 m.readshapefile()을 호출하면 Basemap 인스턴스에서 호출 할 수있는 두 개체가 반환됩니다. 은 국가 테두리의 실제 좌표 목록이되고 m.countries_info은 사전 목록과 사전이 포함됩니다. 그 중에서도 국가 이름이 들어있는 각 국가마다

따라서 m.countries_info의 어느 부분을 m.countries의 모양을 기본 데이터 집합에 매핑 할 수 있는지 알아야합니다. 이것이 정확하게 실행되는 방법은 데이터 파일의 정확한 정보와 shapefile에서 오는 사전 *_info의 키에 따라 다릅니다.