matplotlib - imshow'radities'definiton杀死了plt.text

时间:2014-07-30 13:54:03

标签: matplotlib

我是matplotlib的新手,所以请耐心等待。我在下面的代码中绘制了一个圆柱形的等距离降水网格。我设置了范围'最终将我的底图与数据对齐的限制。现在,它似乎已经被打破了#34;我的plt.text功能,因为我无法再看到文字'降水率(毫米/小时)'。谢谢你的帮助。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
from pylab import *
import pickle

from mpl_toolkits.basemap import Basemap

fp = open('uneven_rgb.pkl', 'rb')
uneven_rgb = pickle.load(fp)
fp.close()

num_lon = 1440
num_lat = 400
precipfile = "/Users/bolvin/3B43.20111001.7.HDF_precip.bin"

fileobj = open(precipfile, mode='rb') # Open file as read only binary

data = np.fromfile (fileobj, dtype ='f')

datat = np.reshape(data, (num_lon, num_lat), order = 'FORTRAN')

datam = datat * 24.0

my_cmap = matplotlib.colors.LinearSegmentedColormap('my_colormap',uneven_rgb)

plt.figure(figsize = (20,10))

mapproj = Basemap(projection = 'cyl', llcrnrlat=-50.0, llcrnrlon=0.0, urcrnrlat=50.0,urcrnrlon=360.0)

mapproj.drawcoastlines()
mapproj.drawcountries()

mapproj.drawparallels(np.array([-30.0, 0.0, 30.0]), labels=[0,0,0,0])
mapproj.drawmeridians(np.array([90.0, 180.0, 270.0]), labels=[0,0,0,0])

myplot = plt.imshow(datam.T, interpolation = 'nearest', cmap = my_cmap, vmin = 0.0, vmax = 20.0, extent = (0.0, 360.0, -50.0, 50.0))

plt.title('October 2011 3B43 Precipitation', fontsize = 36, y = 1.03)
plt.text(1.0, 435.0, 'Precipitation Rate (mm/hour)', size = 20)

cbar = plt.colorbar(myplot, orientation='horizontal', shrink = 0.5, pad = 0.03)
cbar.ax.tick_params(labelsize=20) 

plt.gca().axes.get_xaxis().set_visible(False)
plt.gca().axes.get_yaxis().set_visible(False)

plt.show()

fileobj.close()

1 个答案:

答案 0 :(得分:0)

plt.text将第一个参数作为文本放置的x和y坐标。

当你将你的imshow情节转换为0-360的x和0-50到50的y时,y=435不再出现在情节中。

您可以使用plt.gca().get_xlim().

检查自己的限额

你必须把它移到你的极限。

您使用此文本定义要绘制的单位,对吗?所以这个的自然地方就是颜色条的标签:

cbar = plt.colorbar(myplot, orientation='horizontal', shrink = 0.5, 
                    pad = 0.03, label='Precipitation Rate (mm/hour)')