как нанести текст на базовую карту, python

Я думал поместить на карту текст, например спутниковые снимки.

import numpy as np, matplotlib.pyplot as plt    
from mpl_toolkits.basemap import Basemap    

m = Basemap(resolution='l',projection='geos',lon_0=-75.)    
fig = plt.figure(figsize=(10,8))    
m.drawcoastlines(linewidth=1.25)    
x,y = m(-150,80)
plt.text(x,y,'Jul-24-2012')

Однако текст «Jul-24-2012» не отображается на моем рисунке. Я предполагаю, что причина этого в том, что карта не в декартовых координатах.

Итак, может ли кто-нибудь помочь мне понять, как это сделать, пожалуйста?


person Franke Hsu    schedule 03.12.2013    source источник


Ответы (1)


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

Если вы просто хотите разместить текст в точке с координатами оси (например, в верхнем левом углу графика), используйте annotate, а не text.

На самом деле довольно редко вы действительно захотите использовать text. annotate гораздо более гибок и на самом деле ориентирован на аннотирование графика, а не просто на размещение текста в координатах x,y в координатах данных. (Например, даже если вы хотите аннотировать позицию x,y в координатах данных, вам часто требуется смещение текста от нее на расстояние в пунктах, а не в единицах данных.)

import matplotlib.pyplot as plt

from mpl_toolkits.basemap import Basemap

m = Basemap(resolution='l',projection='geos',lon_0=-75.)

fig = plt.figure(figsize=(10,8))

m.drawcoastlines(linewidth=1.25)

#-- Place the text in the upper left hand corner of the axes
# The basemap instance doesn't have an annotate method, so we'll use the pyplot
# interface instead.  (This is one of the many reasons to use cartopy instead.)
plt.annotate('Jul-24-2012', xy=(0, 1), xycoords='axes fraction')

plt.show()

введите здесь описание изображения

person Joe Kington    schedule 04.12.2013
comment
Следует отметить, что annotate — это просто причудливая оболочка для text, которая заботится о преобразованиях для вас в фоновом режиме. - person tacaswell; 04.12.2013
comment
Это действительно помощь. Я изменил его на число пикселей для местоположения. Благодарю вас. - person Franke Hsu; 05.12.2013
comment
Этот ответ идеален. Почему ты не принимаешь это, @Franke? - person swatchai; 11.05.2017