Cartopy figsize не меняет фактический размер карты - PullRequest
0 голосов
/ 13 мая 2018

Как изменить ширину и высоту фигуры при использовании картографии.изменение размера изменяет только белое пространство вокруг фигуры, но не саму фигуру.Есть идеи.

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

def main():
    fig = plt.figure(figsize=(10,10))
    ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree())
    ax.set_extent([-20, 60, -40, 45], crs=ccrs.PlateCarree())

    ax.add_feature(cfeature.LAND)
    ax.add_feature(cfeature.OCEAN)
    ax.add_feature(cfeature.COASTLINE)
    ax.add_feature(cfeature.BORDERS, linestyle=':')
    ax.add_feature(cfeature.LAKES, alpha=0.5)
    ax.add_feature(cfeature.RIVERS)

    plt.show()

if __name__ == '__main__':
    main()

этот код найден здесь enter image description here

1 Ответ

0 голосов
/ 17 мая 2018

Размер карты можно определить только по ее протяженности с помощью метода set_extent().Изменение figsize повлияет только на белую рамку вокруг осей карты.

РЕДАКТИРОВАТЬ

Я вижу только один вариант, если вы хотите увеличить карту без изменения ее экстента : изменить проекцию.Вот некоторые примеры:

enter image description here enter image description here enter image description here

Как видите, некоторые проекциибудет иметь тенденцию увеличивать высоту, некоторые другие будут казаться шире.Вы не можете полностью контролировать соотношение ширины и высоты карты, но все же можете попытаться определить, подходят ли вам некоторые проекции.

Вы можете найти список проекций в https://scitools.org.uk/cartopy/docs/v0.15/crs/projections.html.

Вот код, который произвел первое изображение:

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

fig = plt.figure(figsize=(3, 3))

ax = fig.add_subplot(1, 1, 1, projection=ccrs.LambertCylindrical())
ax.set_extent([-20, 60, -40, 45])
ax.add_feature(cfeature.LAND)
ax.add_feature(cfeature.OCEAN)
ax.add_feature(cfeature.COASTLINE)
ax.add_feature(cfeature.BORDERS, linestyle=':')
ax.add_feature(cfeature.LAKES, alpha=0.5)
ax.add_feature(cfeature.RIVERS)
ax.set_title('LambertCylindrical')

plt.savefig('LambertCylindrical.png', dpi=100)
...