2016-03-18 68 views
0

我想根據默認設置生成「放大」的南極洲的正交(極座標)圖。默認情況下,我得到這個:正射投影的限制範圍(縮放)

Antarctica polar

下面的腳本生成此。

import cartopy.crs as ccrs 
import matplotlib.pyplot as plt 

ax = plt.axes(projection=ccrs.Orthographic(central_longitude=0.0, central_latitude=-90.)) 
ax.stock_img() 
plt.show() 

我最好告訴Cartopy「限制緯60S至90年代的企圖是:

ax.set_extent([-180,180,-60,-90], ccrs.PlateCarree()) 

遺憾的是它不給desired result。有任何想法嗎?提前致謝。

回答

0

我不確定我完全明白你想要做什麼。你的例子看起來像是一個已定義的邊界框,但是你希望它像第一個例子那樣圓形?

cartopy文檔有http://scitools.org.uk/cartopy/docs/latest/examples/always_circular_stereo.html的例子:

import matplotlib.path as mpath 
import matplotlib.pyplot as plt 
import numpy as np 

import cartopy.crs as ccrs 
import cartopy.feature 


def main(): 
    fig = plt.figure(figsize=[10, 5]) 
    ax1 = plt.subplot(1, 2, 1, projection=ccrs.SouthPolarStereo()) 
    ax2 = plt.subplot(1, 2, 2, projection=ccrs.SouthPolarStereo(), 
         sharex=ax1, sharey=ax1) 
    fig.subplots_adjust(bottom=0.05, top=0.95, 
         left=0.04, right=0.95, wspace=0.02) 

    # Limit the map to -60 degrees latitude and below. 
    ax1.set_extent([-180, 180, -90, -60], ccrs.PlateCarree()) 

    ax1.add_feature(cartopy.feature.LAND) 
    ax1.add_feature(cartopy.feature.OCEAN) 

    ax1.gridlines() 
    ax2.gridlines() 

    ax2.add_feature(cartopy.feature.LAND) 
    ax2.add_feature(cartopy.feature.OCEAN) 

    # Compute a circle in axes coordinates, which we can use as a boundary 
    # for the map. We can pan/zoom as much as we like - the boundary will be 
    # permanently circular. 
    theta = np.linspace(0, 2*np.pi, 100) 
    center, radius = [0.5, 0.5], 0.5 
    verts = np.vstack([np.sin(theta), np.cos(theta)]).T 
    circle = mpath.Path(verts * radius + center) 

    ax2.set_boundary(circle, transform=ax2.transAxes) 

    plt.show() 

if __name__ == '__main__': 
    main() 
+0

感謝馬特,事實上,我一直在尋找一種方式來產生圓潤的曲線,但約束邊界座標(在這種情況下,緯度)。你提供的例子正在解決這個問題。儘管如此,這並不適用於插入'ax2.stock_img()',但這沒有什麼大不了的。 –