Страница 1 из 2
MatPlotLib: Подписи параллелей на карте
Добавлено: 23 июн 2015, 15:41
nickleb
Как подписать параллели на карте в MatPlotLib.
Меридианы подписываю по всем четырём границам прямоугольного экстента.
А label'ы параллелей бы надо в поле карты.
Код: Выделить всё
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
m = Basemap(projection='npstere',boundinglat=70,lon_0=310,resolution='l')
m.drawcoastlines()
m.fillcontinents(color='coral',lake_color='aqua')
m.drawmeridians(np.arange(-180.,181.,15.),labels=[True,True,True,True])
m.drawparallels(np.arange(63.,90.,1.))
m.etopo()
ax = plt.gca()
plt.show()
Re: MatPlotLib: Подписи параллелей на карте
Добавлено: 23 июн 2015, 15:52
Ariki
Re: MatPlotLib: Подписи параллелей на карте
Добавлено: 23 июн 2015, 15:56
nickleb
Ariki, благодарю... Вроде то, что надо...
Re: MatPlotLib: Подписи параллелей на карте
Добавлено: 24 июн 2015, 07:51
nickleb
... почему-то меридианы не прорисовываются севернее 80-го градуса широты... это не относительно приведённой Вами, Ariki, ссылки, а по скрипту, который я дал выше... похоже, что тоже надо, что-то своё писать?..
Re: MatPlotLib: Подписи параллелей на карте
Добавлено: 24 июн 2015, 11:05
Ariki
У drawmeridians() есть параметр latmax, задающий максимальную широту, до которой рисуется меридиан. По умолчанию - 80.
Re: MatPlotLib: Подписи параллелей на карте
Добавлено: 24 июн 2015, 11:57
nickleb
Ariki писал(а):У drawmeridians() есть параметр latmax, задающий максимальную широту, до которой рисуется меридиан. По умолчанию - 80.
Спасибо, Ariki. Есть такое - сработало:
Код: Выделить всё
meridians = np.arange(0.,351.,10.)
m.drawmeridians(meridians,labels=[1,1,1,1],linewidth=0.25,latmax=89)
Re: MatPlotLib: Подписи параллелей на карте
Добавлено: 24 июн 2015, 14:04
nickleb
Ariki, а карта в полярных проекциях в matplotlib'e по прямоугольному домейну картографических обрезается какими-то опциями? в basemap'е или по axes?
Re: MatPlotLib: Подписи параллелей на карте
Добавлено: 24 июн 2015, 16:48
Ariki
В
документации всё описано. Для этих проекций углы прямоугольника явно не задаются, но можно задать width и height в единицах проекции (метрах). Если вам известны координаты углов в географических координатах, то вы можете воспользоваться pyproj, чтобы получить их в системе координат проекции.
Re: MatPlotLib: Подписи параллелей на карте
Добавлено: 24 июн 2015, 17:20
Ariki
Таки соврал. Почитал внимательнее - ширина и высота для вашей npstere тоже игнорируются. Можно попробовать использовать более общую stere вместо неё, по идее должно сработать.
Re: MatPlotLib: Подписи параллелей на карте
Добавлено: 24 июн 2015, 19:26
nickleb
Ariki писал(а):Таки соврал. Почитал внимательнее - ширина и высота для вашей npstere тоже игнорируются. Можно попробовать использовать более общую stere вместо неё, по идее должно сработать.
Да, Ariki, спасибо за потраченное на мои вопросы время и дельные советы! Почитаю документацию, попробую - разберусь.
Re: MatPlotLib: Подписи параллелей на карте
Добавлено: 26 июн 2015, 10:56
nickleb
Ariki писал(а):В
документации всё описано. Для этих проекций углы прямоугольника явно не задаются, но можно задать width и height в единицах проекции (метрах). Если вам известны координаты углов в географических координатах, то вы можете воспользоваться pyproj, чтобы получить их в системе координат проекции.
Уважаемый
Ariki, а layers-концепция в matplotlib'е она как реализована? Не найдёте ли время "ткнуть" меня в пример практический какой-то?
Re: MatPlotLib: Подписи параллелей на карте
Добавлено: 26 июн 2015, 12:01
Ariki
Насколько я знаю, концепции такой нет, данные просто отрисовываются последовательно вызовами функций. А что вы имеете в виду: работу с источниками растровых или векторных данных, стили отображения или порядок отрисовки?
И я тоже не спец по matplotlib: использовал его однажды года три назад. Официальная документация по Basemap изобилует примерами. Если напишете конкретно, что хотите получить, помогу найти

Re: MatPlotLib: Подписи параллелей на карте
Добавлено: 26 июн 2015, 12:40
nickleb
Ariki писал(а):Насколько я знаю, концепции такой нет, данные просто отрисовываются последовательно вызовами функций. А что вы имеете в виду: работу с источниками растровых или векторных данных, стили отображения или порядок отрисовки?
И я тоже не спец по matplotlib: использовал его однажды года три назад. Официальная документация по Basemap изобилует примерами. Если напишете конкретно, что хотите получить, помогу найти

Интересует пункт восемь) из нижеизложенного:
1) отрисовал basemap-подложку;
2) открыл ASCII Lon/Lat/DateTime-файл;
3) есть набор лет - по нему цикл внешний начинаю;
4) построчный loop по содержимому ASCII Lon/Lat/DateTime-файлу и отрисовка каждой точки на карте, если она за текущий год;
5)дошёл до EOF() - делаю plt.show(), savefig()
6)указатель на начало ASCII Lon/Lat/DateTime-файла;
7)следующая итерация внешнего цикла по годам;
Восемь) очистить положение точек за предыдущий год;[/u]
9) нарисовать положение точек за текущий год на подложке;
10) снова операция, указанная в пункте 5)-ть
какую функцию и как выполнить в пункте Восемь)-мь моего, безусловно, не рационального, прежде всего, по организации данных, лобового подхода и плана?
Re: MatPlotLib: Подписи параллелей на карте
Добавлено: 26 июн 2015, 17:28
Ariki
Может, очистить рисунок с помощью clf() и повторить с отрисовки basemap?
Re: MatPlotLib: Подписи параллелей на карте
Добавлено: 26 июн 2015, 17:53
nickleb
Ariki писал(а):Может, очистить рисунок с помощью clf() и повторить с отрисовки basemap?
..ага... завтра попробую... напишу как получиться иль нет... спасибо!