def nwis_heat_map(self):
from scipy.interpolate import griddata
import matplotlib.cm as cm
import matplotlib as mpl
meth = 'linear' # 'nearest'
data = self.data
if isinstance(data.index, pd.core.index.MultiIndex):
data.index = data.index.droplevel(0)
x = data.index.dayofyear
y = data.index.year
z = data.value.values
xi = np.linspace(x.min(), x.max(), 1000)
yi = np.linspace(y.min(), y.max(), 1000)
zi = griddata((x, y), z, (xi[None, :], yi[:, None]), method=meth)
cmap = plt.cm.get_cmap('RdYlBu')
norm = mpl.colors.Normalize(vmin=z.min(), vmax=z.max())
#norm = mpl.colors.LogNorm(vmin=0.1, vmax=100000)
m = cm.ScalarMappable(norm=norm, cmap=cmap)
m.set_array(z)
br = plt.contourf(xi, yi, zi, color=m.to_rgba(z), cmap=cmap)
# setup the colorbar
cbar = plt.colorbar(m)
cbar.set_label('Discharge (cfs)')
plt.xlabel('Month')
plt.ylabel('Year')
plt.yticks(range(y.min(), y.max()))
mons = {'Apr': 90.25, 'Aug': 212.25, 'Dec': 334.25, 'Feb': 31, 'Jan': 1, 'Jul': 181.25, 'Jun': 151.25,
'Mar': 59.25, 'May': 120.25,
'Nov': 304.25, 'Oct': 273.25, 'Sep': 243.25}
monnms = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
plt.title(self.sites.station_nm[0].title())
tickplc = []
plt.xticks([mons[i] for i in monnms], monnms)
plt.grid()
评论列表
文章目录