MatPlotLib: Подписи параллелей на карте

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

MatPlotLib: Подписи параллелей на карте

Сообщение nickleb » 23 июн 2015, 15:41

Как подписать параллели на карте в 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()
Последний раз редактировалось nickleb 31 авг 2015, 19:52, всего редактировалось 1 раз.

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: MatPlotLib: Подписи параллелей на карте

Сообщение Ariki » 23 июн 2015, 15:52


nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: MatPlotLib: Подписи параллелей на карте

Сообщение nickleb » 23 июн 2015, 15:56

Ariki, благодарю... Вроде то, что надо...

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: MatPlotLib: Подписи параллелей на карте

Сообщение nickleb » 24 июн 2015, 07:51

... почему-то меридианы не прорисовываются севернее 80-го градуса широты... это не относительно приведённой Вами, Ariki, ссылки, а по скрипту, который я дал выше... похоже, что тоже надо, что-то своё писать?..

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: MatPlotLib: Подписи параллелей на карте

Сообщение Ariki » 24 июн 2015, 11:05

У drawmeridians() есть параметр latmax, задающий максимальную широту, до которой рисуется меридиан. По умолчанию - 80.

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: MatPlotLib: Подписи параллелей на карте

Сообщение nickleb » 24 июн 2015, 11:57

Ariki писал(а):У drawmeridians() есть параметр latmax, задающий максимальную широту, до которой рисуется меридиан. По умолчанию - 80.
Спасибо, Ariki. Есть такое - сработало:

Код: Выделить всё

meridians = np.arange(0.,351.,10.)
m.drawmeridians(meridians,labels=[1,1,1,1],linewidth=0.25,latmax=89)

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: MatPlotLib: Подписи параллелей на карте

Сообщение nickleb » 24 июн 2015, 14:04

Ariki, а карта в полярных проекциях в matplotlib'e по прямоугольному домейну картографических обрезается какими-то опциями? в basemap'е или по axes?

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: MatPlotLib: Подписи параллелей на карте

Сообщение Ariki » 24 июн 2015, 16:48

В документации всё описано. Для этих проекций углы прямоугольника явно не задаются, но можно задать width и height в единицах проекции (метрах). Если вам известны координаты углов в географических координатах, то вы можете воспользоваться pyproj, чтобы получить их в системе координат проекции.

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: MatPlotLib: Подписи параллелей на карте

Сообщение Ariki » 24 июн 2015, 17:20

Таки соврал. Почитал внимательнее - ширина и высота для вашей npstere тоже игнорируются. Можно попробовать использовать более общую stere вместо неё, по идее должно сработать.

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: MatPlotLib: Подписи параллелей на карте

Сообщение nickleb » 24 июн 2015, 19:26

Ariki писал(а):Таки соврал. Почитал внимательнее - ширина и высота для вашей npstere тоже игнорируются. Можно попробовать использовать более общую stere вместо неё, по идее должно сработать.
Да, Ariki, спасибо за потраченное на мои вопросы время и дельные советы! Почитаю документацию, попробую - разберусь.

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: MatPlotLib: Подписи параллелей на карте

Сообщение nickleb » 26 июн 2015, 10:56

Ariki писал(а):В документации всё описано. Для этих проекций углы прямоугольника явно не задаются, но можно задать width и height в единицах проекции (метрах). Если вам известны координаты углов в географических координатах, то вы можете воспользоваться pyproj, чтобы получить их в системе координат проекции.
Уважаемый Ariki, а layers-концепция в matplotlib'е она как реализована? Не найдёте ли время "ткнуть" меня в пример практический какой-то?

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: MatPlotLib: Подписи параллелей на карте

Сообщение Ariki » 26 июн 2015, 12:01

Насколько я знаю, концепции такой нет, данные просто отрисовываются последовательно вызовами функций. А что вы имеете в виду: работу с источниками растровых или векторных данных, стили отображения или порядок отрисовки?

И я тоже не спец по matplotlib: использовал его однажды года три назад. Официальная документация по Basemap изобилует примерами. Если напишете конкретно, что хотите получить, помогу найти :D

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: MatPlotLib: Подписи параллелей на карте

Сообщение nickleb » 26 июн 2015, 12:40

Ariki писал(а):Насколько я знаю, концепции такой нет, данные просто отрисовываются последовательно вызовами функций. А что вы имеете в виду: работу с источниками растровых или векторных данных, стили отображения или порядок отрисовки?

И я тоже не спец по matplotlib: использовал его однажды года три назад. Официальная документация по Basemap изобилует примерами. Если напишете конкретно, что хотите получить, помогу найти :D
Интересует пункт восемь) из нижеизложенного:
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)-ть

какую функцию и как выполнить в пункте Восемь)-мь моего, безусловно, не рационального, прежде всего, по организации данных, лобового подхода и плана?

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: MatPlotLib: Подписи параллелей на карте

Сообщение Ariki » 26 июн 2015, 17:28

Может, очистить рисунок с помощью clf() и повторить с отрисовки basemap?

nickleb
Гуру
Сообщения: 964
Зарегистрирован: 22 май 2010, 20:20
Репутация: 154

Re: MatPlotLib: Подписи параллелей на карте

Сообщение nickleb » 26 июн 2015, 17:53

Ariki писал(а):Может, очистить рисунок с помощью clf() и повторить с отрисовки basemap?
..ага... завтра попробую... напишу как получиться иль нет... спасибо!

Ответить

Вернуться в «Общий - ПО»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 8 гостей