寒暖の差大きく、大雪も 12~2月、気象庁まとめ (日経新聞)エルニーニョを話題とする。エルニーニョを監視するために、東太平洋のエルニーニョ監視領域の海面温度がよく使われる。エルニーニョ監視領域
気象庁は1日、この冬(昨年12月~今年2月)の天候まとめを発表した。3カ月間の平均気温は全国的に高めとなったものの、暖冬をもたらす「エルニーニョ現象」と北極域の気圧が高くなる「北極振動」の影響で、例年以上に寒暖の差が大きくなった。 気象庁によると、今冬はエルニーニョ現象の影響で西高東低の冬型の気圧配置が長続きせず、平均気温は西日本で平年より1.0度、東日本で0.9度、北日本と沖縄・奄美は0.6度高くなった。 季節外れの暖かさとなったのは1月下旬と2月下旬で、2月25日には全国約160カ所で、2月の最高気温の記録を更新した。(01日 19:53)
エルニーニョ監視領域の温度とその平年値からの偏差(anomaly)のデータはNOAAのclimate predictionセンターから手に入る。ここの情報によれば、平年値は1971年から2000年までの平均で定義される。
以下は、これらのエルニーニョ監視領域の絶対値と偏差をネットから取得するモジュールと、4つの監視領域の偏差をデータ全期間もしくは過去48ヶ月分プロットするプログラムである。今回は正で赤、負で青で塗り分けるために、matplotlibのfill_betweenを使った。
NINO_all.png
NINO_48months.png
import numpy as np import scikits.timeseries as ts def read_NINO(): """ output output NINO index data data souce is http://www.cpc.ncep.noaa.gov/data/indices/sstoi.indices Explanation is http://www.cpc.ncep.noaa.gov/data/indices/ usage: from read_NINO import read_NINO data=read_NINO() outputs are data["NINO1+2"] : NINO1+2 data["NINO1+2 ANOM"]: NINO1+2 ANOMARY data["NINO3"] : NINO3 data["NINO3 ANOM"] : NINO3 ANOMALY data["NINO4"] : NINO4 data["NINO4 ANOM"] : NINO4 ANOMALY data["NINO3.4"] : NINO3.4 data["NINO3.4 ANOM"]: NINO3.4 ANOMALY """ ninodata={} names=('YEAR','MONTH','NINO1+2','NINO1+2 ANOM','NINO3','NINO3 ANOM','NINO4','NINO4 ANOM','NINO3.4','NINO3.4 ANOM') ds = np.DataSource(None) f=ds.open('http://www.cpc.ncep.noaa.gov/data/indices/sstoi.indices') data=np.loadtxt(f,skiprows=1,\ dtype={'formats':('i4','i4','f4','f4','f4','f4','f4','f4','f4','f4'),\ 'names': names}) firstday=ts.Date(freq='M',year=data['YEAR'][0],month=data['MONTH'][0]) for n in names[2:]: ninodata[n]=ts.time_series(data[n],start_date=firstday,freq='M') return ninodata ####################################################################### if __name__ == '__main__': import matplotlib.pyplot as plt import matplotlib.dates as mdates data=read_NINO() #plot for nt in range(2): temp=data['NINO3'].dates # dummy to get dates of time series if nt==0: # all data t=ts.date_array(start_date=temp[0],end_date=temp[-1]) figname="NINO_all.png" else: # last 48 months t=ts.date_array(start_date=temp[-1]-47,end_date=temp[-1]) figname="NINO_48months.png" fig=plt.figure() names=('NINO1+2 ANOM','NINO3 ANOM','NINO4 ANOM','NINO3.4 ANOM') for n,name in enumerate(names): x=(data[name])[t].dates.tolist() y=(data[name])[t].series ax=fig.add_subplot(len(names),1,n+1) ax.plot(x,y,'k-') ax.fill_between(x,y1=y,y2=0,facecolor='red',where=y>=0) #positive red ax.fill_between(x,y1=y,y2=0,facecolor='blue',where=y<=0) #positive red if (nt==0): # axis for all data years = mdates.YearLocator(5) #major tick every 5 years ax.xaxis.set_major_locator(years) else: # axis for latst 48 months years = mdates.YearLocator(1) #major tick every 1 year ax.xaxis.set_major_locator(years) months = mdates.MonthLocator() # minor tick every month ax.xaxis.set_minor_locator(months) plt.title(name) #tile plt.subplots_adjust(hspace=0.5) #adjust subplot scape plt.savefig(figname) plt.show()
0 件のコメント:
コメントを投稿