我想在我的地图上放一个文字,比如the satellite imagery。
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')
然而,文字“7月24日至2012年”没有出现在我的身影上。 我想这是因为地图不是笛卡尔坐标。
那么,有人可以帮我弄明白怎么做吗?
答案 0 :(得分:7)
您的文字没有显示的原因是您试图绘制一个对您正在使用的地图投影无效的点。
如果您只是想在轴坐标中的某个位置放置文本(例如图的左上角),请使用annotate
,而不是text
。
事实上,您实际上想要使用text
的情况相当罕见。 annotate
更灵活,实际上是为了注释绘图,而不是仅仅将文本放在数据坐标的x,y位置。 (例如,即使您要在数据坐标中注释x,y位置,您也经常希望文本偏移 points 而不是数据单位。)
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()