首先使用numpy建立一些需要繪製的資料點(共25*25個),**如下:
import不設定資料投影型別,繪製這些資料點,**如下:numpy as np
lon = np.linspace(-80, 80, 25)
lat = np.linspace(30, 70, 25)
lon2d, lat2d =np.meshgrid(lon, lat)
data = np.cos(np.deg2rad(lat2d) * 4) + np.sin(np.deg2rad(lon2d) * 4)
print(data.shape)
#the projection keyword determines how the plot will look
plt.figure(figsize=(6, 3))
ax = plt.axes(projection=ccrs.platecarree()) # axes的projection引數最好設定,此處選擇platecarree()
ax.set_global()ax.coastlines()
ax.contourf(lon, lat, data)
#此處不設定資料點投影型別
從繪製結果可以看出,結果是正確的,實質為預設資料投影與platecarree()保持一致。下面設定資料投影型別,**如下:
data_crs =ccrs.platecarree()#the projection keyword determines how the plot will look
plt.figure(figsize=(6, 3))
ax = plt.axes(projection=ccrs.platecarree())
ax.set_global()
ax.coastlines()
ax.contourf(lon, lat, data, transform=data_crs)
使用transform關鍵字設定資料投影,請謹記:在任何情況下,請務必設定axes的projection引數與資料點的transform引數。
當改變axes的投影時,資料的transform必須與資料本身的投影保持一致,這樣繪製的圖才是正確的,**如下:
data_crs =ccrs.platecarree()#now we plot a rotated pole projection
projection = ccrs.rotatedpole(pole_longitude=-177.5, pole_latitude=37.5)
plt.figure(figsize=(6, 3))
ax = plt.axes(projection=projection)
ax.set_global()
ax.coastlines()
ax.contourf(lon, lat, data,transform=data_crs) #
此處必須和資料本身投影保持一致
可以看到,資料會「自動按照」axes的投影,進行轉換,已被正確繪製在地圖上。
可以看出,只要transform關鍵字設定正確,資料就可以在任意投影下顯示正確。如果要設定資料顯示範圍,set_extent同樣需要正確設定投影引數crs。
java中this關鍵字的理解
this關鍵字 1 呼叫本類中的屬性 成員變數 2 呼叫本類中的方法 3 呼叫本類中的其他構造方法,呼叫時要放在構造方法的首行。例 public class person private string name private string phone public void setname str...
理解golang中關鍵字 chan select
channel直譯過來就是管道,chan關鍵字定義了goroutine中的管道通訊,乙個goroutine可以和另乙個goroutine進行通訊。chan的讀寫和定義如下 define a chan type variable var ch chan int make chan int,10 or ...
Java中 this 和 super 關鍵字理解
首先還是來看一下例子 package thi ample public class student public student long id public student long id,string name public void print package thi ample public...