2016-10-12 2 views
1

은 내가 pcolormesh를 사용하여베이스 맵에 플롯을 시도하고 위성 스윕 데이터를 이동합니다. 각 지점에서 해당 위도와 경도를 제공 2D 어레이는 위도 및 경도에 대응하는 2 개의와 데이터가 2 차원 매트릭스로 구성되어

(bTemp). 그래서 내 플로팅 코드는 다음과 같습니다.

m = Basemap() 
m.drawcoastlines() 
m.pcolormesh(lon, lat, bTemp) 

그러나 이것은 내가 찾던 결과가 아닙니다. 큰 줄무늬가지도를 가로 질러 달립니다. enter image description here

내 생각에 경도는 지정된 광선을 따라 랩 어라운드 지점에서 비 단조롭게 증가한다는 것입니다. 여기

내 경도 배열에 레이의 플롯을 수있는 가장 좋은 방법은 pcolormesh 플롯 단지의 반대편으로 이동하도록이 될 해결하는 것이 무엇

plot(lon[100,:]) 

enter image description here

채워진 지역과 두 지점을 연결하지 않고지도를 만들 수 있습니까?

답변

0

당신은 당신의 데이터를 푸는 numpy.unwrap를 사용하여 시도 할 수 있습니다. 이것은 정확히 이것을 위해 설계되었습니다 : 단일 값 함수를 사용하는 방식으로 인한 인공물 인 각도 점프 (라디안)를 푸는 것.

당신은이 작업을 위해도, 라디안 사이에 앞뒤로 경도를 변환해야하지만, 요점은 이것이다

이보다 큰 180도이 데이터에서 그 점프를 찾을 수

import numpy as np 
lon_unwrapped = np.rad2deg(np.unwrap(np.deg2rad(lon))) 

, 그들의 360도 보완을 취하십시오. 예 :

np.rad2deg(np.unwrap(np.deg2rad([150,-150]))) 
# array([ 150., 210.]) 

또한, unwrap는 ndarray 데이터를 받아, 당신은 해명을 수행 할 축이되는 함께 알 수 있습니다. 기본적으로 이것은 마지막 치수입니다. lon[i,:]을 풀고 자하는 경우에는 문제가되지 않는 것으로 보입니다.

+1

이 꽤 내가 원하는 결과를 제공하지 않습니다. 오히려 -180에서 180까지 순조로운 증가로 끝나고, 점프 후 내 번호에 360을 추가합니다. 그래서 기본적으로 당신은 점프 후 위 내 선 그림의 부분을 가져다가 바로 라인의 나머지 부분과 일치하도록을 제기 좋아 .... 나는 부드러운 증가와 함께 결국,하지만 ~ 240도까지 ~ 90에서이다 . 그래서 나는 플롯하지 않습니다 단지베이스 맵 경도 값> (180)와 끝까지. – hm8

+0

@ user3826115 예, 그게해야 할 일입니다. 구의 각도를 합리적으로 표현하는 것이 적절하게 끝나야한다는 것을 알았습니다.이 경우에는베이스 맵이 그렇게하지 않는다는 것을 몰랐습니다. /이 경우에는 주기적으로 데이터의 순서를 바꾸는 것 외에는 다른 기회가 없습니다. 무차별 옵션 :'ind = np.where (np.diff (lon [i, :]) <0) [0] +1; lon [i ,:] = np.concatenate ((lon [i, ind :], lon [i, : ind]))', 순환 순열. 또한 ['addcyclic'] (http://matplotlib.org/basemap/api/basemap_api.html#mpl_toolkits.basemap.addcyclic)이 unwrap을 사용한 후에 필요할 수도있는 것을 시도 할 수 있습니다. 찾지 못했습니다. 문서는 분명합니다. –