2016-07-26 3 views
2

Я делаю некоторые построения с использованием картографии и matplotlib, и недавно я использовал преобразование PlateCarree, но я перешел на Меркатор, потому что Луизиана была слишком сплющена по своему вкусу. До выключателя, у меня был логотип, отображаемый в левом нижнем углу, с помощью этих двух строк кода logo = matplotlib.image.imread('/Users/ian/Desktop/M.png') plt.imshow(logo, extent =(lon-offset -1 + .25, lon - offset + .75, lat - offset + .25, lat - offset + 1 + .75), zorder=35) Ускорение изображения при применении картографических преобразований

Если протяженность оси была установлена ​​с помощью этих точек

ax.set_extent([lon-offset-1, lon+offset+1, lat-offset, lat+offset]) 

это то, что сюжет выглядел как использование PlateCarree: enter image description here

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

plt.imshow(logo, extent =(lon-offset -1 +.25, lon - offset + .75, lat - offset + .25, lat - offset + 1 + .75), zorder=35, transform=ccrs.PlateCarree()) 

но теперь логотип потерял свою рассыпчатость и стать перекосом с преобразованием, и наиболее таинственным, он переключил углы в верхний левый угол участка. Теперь это выглядит так: enter image description here

Кто-нибудь знает, как я могу изменить проекцию моего сюжета без искажения этого изображения? То, что мне действительно нужно сделать, это убедиться, что угол изображения находится в углу графика в преобразованной системе координат, но остальное место размещения изображения не зависит от системы координат. Я думал о том, чтобы поместить изображение в одиночку в отдельном подзаголовке, а не пытаться разместить этот подзаговор непосредственно поверх основного. Похоже, это довольно плохое решение. Благодаря!

ответ

3

Вы можете получить лучшие результаты, если вы построите логотип изображения в координатах осей, а не в координатах данных. Вы можете использовать для этого трансформацию ax.transAxes и указать степень в координатах осей ([0, 0] в левом нижнем углу, [1, 1] вверху справа).