Использование контурной проекции со смещением долготы в картопии - PullRequest
0 голосов
/ 08 сентября 2018

Используя cartopy, я пытаюсь построить заполненные контуры в проекции, центрированной по ненулевой долготе:

from pylab import *
from cartopy import crs

xi = linspace(-180, 180, 37)
yi = linspace(-90, 90, 19)
XI,YI = meshgrid(xi, yi)
ZI = cos(pi*XI/180)*cos(pi*YI/180)

ax = axes( projection = crs.PlateCarree(central_longitude = 90) )
contourf(
    XI, YI, ZI, 10,
    transform=crs.PlateCarree(),
    )
ax.coastlines()

savefig('mwe.pdf')

Это дает следующий график, который (в некоторых масштабах) отображаеттонкая вертикальная линия (проходящая через центр более темной области), соответствующая разрыву в значениях долготы (180 градусов восточной долготы или западной долготы).Вероятно, это связано с тем, что формы, выводимые contourf, неправильно соединены по всему разрыву.

Есть ли способ исправить это?Или же я могу произвольно редактировать базовые координаты, используемые coastlines() для имитации проекции со смещением по долготе?

enter image description here

1 Ответ

0 голосов
/ 08 сентября 2018

Это артефакт в выводе PDF, а не что-то не так с графиком. Если вы отображаете график на экране с помощью show() вместо сохранения в PDF, вы больше не увидите эту линию, аналогично, если вы сохраните в формате PNG.

Проблематичный рендеринг PDF, скорее всего, проблема с вашим просмотрщиком PDF. Я запустил ваш код и создал PDF-файл, который имеет те же проблемы, что и ваш, при просмотре с помощью Preview.app или Chrome на MacOS, но когда я открываю его в Acrobat Reader, он выглядит совершенно нормально.

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