미국지도에서 시각화 할 데이터가 있습니다. 나는 미국 밖의 땅 (남서쪽의 멕시코와 북동쪽의 캐나다)에 어떤 색깔도 원하지 않습니다. contourf에서 어떻게 그 영역을 마스크 할 수 있습니까? 주의 경계가 그려지는지 여부는 중요하지 않습니다.미국 대륙 (멕시코 및 캐나다 지역) 외곽에서베이스 맵에서 윤곽선을 제거하는 방법은 무엇입니까?
코드는 다음과 같습니다
색상 미국 경계 외부에서 다음 이미지 주를 생산import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap, cm, maskoceans
from scipy.interpolate import griddata
np.random.seed(77)
lllat = 24.396308
lllon = -124.848974
urlat = 49.384358
urlon = -66.885444
m = Basemap(llcrnrlat=lllat,
urcrnrlat=urlat,
llcrnrlon=lllon,
urcrnrlon=urlon,
resolution='i', projection='cyl')
m.drawcountries(linewidth=1.0)
m.drawstates(linewidth=1.0, color='lightgray')
m.drawlsmask(land_color='gray',ocean_color="#b0c4de", lakes=True)
#create 100 random latitudes
lats = np.random.randint(low=lllat-1, high=urlat+1, size=1000) + np.random.ranf(size=1000)
#create 100 random longitudes
lons = np.random.randint(low=lllon-1, high=urlon+1, size=1000) + np.random.ranf(size=1000)
#create 100 random values/probabilities
probabilities = np.random.random(size=1000)
#now use meshgrid and contourf to visualize it
mlon, mlat = m(*(lons, lats))
# grid data
numcols, numrows = 1000, 1000
xi = np.linspace(mlon.min(), mlon.max(), numcols)
yi = np.linspace(mlat.min(), mlat.max(), numrows)
xi, yi = np.meshgrid(xi, yi)
# interpolate
x, y, z = mlon, mlat, probabilities
zi = griddata((mlon, mlat), probabilities, (xi, yi), method='nearest', rescale=False)
data = maskoceans(xi, yi, zi)
con = m.contourf(xi, yi, data, cmap=plt.get_cmap('YlOrRd'))
cbar = m.colorbar(con,location='right',pad="3%")
plt.show()
, 내가 그들을 제거 할 싶어요.
나는 미국에 존재하지 않지만 경계선 밖의 일부 부분은 여전히 contourf 색상으로 표시되는 점과 lons에서 점을 제거하려고했습니다.
해양 마스크으로 물을 가릴 수는 있지만 멕시코와 캐나다에서는 해당 포인트를 가릴 수 없습니다.
참고 :이 루프에 대한 해결책은 모든 격자 점 이상 미국에없는 모든 지점에 대한 에 유모을 ZI을 설정하지만 내 실제 데이터의 크기가 주어진 너무 많은 계산이다 아니다 나를위한 해결책.
나는 회색과 회색으로 그려져 있고 멕시코와 캐나다가 contourf를 통해 그려 낼 수 있을지도 모르겠다. – Ash