Как я могу изменить поля, когда я строю карту с картопи? - PullRequest
0 голосов
/ 02 ноября 2018

Я использую cartopy (следующий код), чтобы рисовать карты мира. Я установил как ax = fig.add_axes([0, 0, 1, 1]). Однако выходные карты всегда показывают большие поля по кадрам. Я хочу показать карту в полноэкранном или полноразмерном виде.
Как установить поля картографического заговора?

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

fig = plt.figure()
ax = fig.add_axes([0, 0, 1, 1])
ax = plt.axes(projection=ccrs.PlateCarree())

ax.add_feature(cfeature.LAND)
ax.add_feature(cfeature.OCEAN)
ax.add_feature(cfeature.COASTLINE)
ax.add_feature(cfeature.BORDERS)
ax.outline_patch.set_visible(False)

plt.show()

output img here

1 Ответ

0 голосов
/ 02 ноября 2018

Вы создаете две оси.

  1. ax = fig.add_axes([0, 0, 1, 1]) Это оси, которые плотно прилегают к фигуре
  2. ax = plt.axes(projection=ccrs.PlateCarree()) это оси, которые показывают карту мира, но имеют обычные поля.

Конечно, вы можете выбрать один из них и удалить другой, например,

ax = fig.add_axes([0, 0, 1, 1], projection=ccrs.PlateCarree())

Это создаст оси, которые плотно сидят на одной стороне фигуры . Причина в том, что карта имеет фиксированное соотношение сторон и не совпадает с изображением на рисунке.

Таким образом, чтобы оси были натянуты по обеим сторонам фигуры , вам также необходимо установить размер фигуры. Аспект карты мира равен 0,5, потому что он идет на 360 единиц по горизонтали и 180 единиц по вертикали. Следовательно, ширина фигуры должна быть в два раза больше высоты фигуры. Например.

fig = plt.figure(figsize=(7, 3.5))
ax = fig.add_axes([0, 0, 1, 1], projection=ccrs.PlateCarree())

Результат:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...