; plotscatter.pro
MissVal = -999.0
DateTime = systime ()
DateStamp = strmid(DateTime,4,7) + strmid(DateTime,20,4)
loadanyct, 33
Black=0 & Grey=254 & White=255
NInfo = 20
InfoText = strarr(NInfo)
InfoText = ['The values are the changes between','the end of the 20th (1961-90)',$
'and 21st (2070-99) centuries','from 9 climate models',$
'reviewed by the IPCC (2001).','',$
'The 4 plots illustrate 2 seasons','(DJF=Dec-Feb, JJA=Jun-Aug)',$
'and 2 emissions scenarios','(A2,B2 from IPCC SRES).','',$
'The data were interpolated onto','a common grid by Dr. R. Jones',$
'(Hadley Centre); they were','regridded and aggregated into',$
'countries by Dr. T. D. Mitchell.','','Mitchell TD, Hulme M, New M (2002)',$
'Climate data for political areas','Area 34:109-112']
ScenSeasText = strarr(4)
ScenSeasText[*] = ['a2.djf','a2.jja','b2.djf','b2.jja']
ScenSeasCaps = strarr(4)
ScenSeasCaps[*] = ['A2 DJF','A2 JJA','B2 DJF','B2 JJA']
AxisXLabel = "temperature change (degC)"
GiveSymbol, AxisXLabel
AxisYLabel = "precipitation change (%)"
ModelText = strarr(9)
ModelText [*] = ['CCCma','CSIRO','CSM','DMI','GFDL','MRI2','NIES','PCM','UKMO']
GCMText = strarr(9)
GCMText [*] = ['CGCM2','CSIRO mk 2','CSM 1.3','ECHam4','GFDL R15 b','MRI2','CCSR/NIES 2','DOE PCM','HadCM3']
CtyText = strarr(9)
CtyText [*] = ['Canada','Australia','USA','Germany','USA','Japan','Japan','USA','UK']
ModelColor = intarr(9)
ModelColor [*] = [0,30,60,90,120,150,180,210,240]
Exes = intarr(5) & Wyes = intarr(5)
Exes(*) = [-1,0,1,0,-1] & Wyes(*) = [0,1,0,-1,0]
SingleTemp=fltarr(1) & SinglePrec=fltarr(1)
RefFile='/cru/u2/f709762/goglo/ref/half-degree-cty-v3.ref'
LoadRef, 12, 720, 360, MapIDLReg, RegSize, RegName, RegColour, NReg, CallFile=RefFile
for XReg = 0, (NReg-1) do begin
while (strpos(RegName(XReg),'.') GT -1) do begin
DotPlace=strpos(RegName(XReg),'.')
RegText=RegName(XReg) & RegText(DotPlace:DotPlace)=" " & RegName(XReg)=RegText
endwhile
endfor
RegNameCompress = strcompress(RegName,/remove_all)
RegName=strtrim(RegName,2)
RegNameSort=sort(RegName)
print, " > Dumping html code to file ..."
TxtFilePath='/cru/tyn1/f709762/tyn_cy_3.0/v3.01/cty-v3.txt'
openw, lunTxt, TxtFilePath, /get_lun, error=OpenStatus
for XReg=0,(NReg-1) do begin
printf,lunTxt,"
",RegName(RegNameSort(XReg))," | ",format="(3a)"
printf,lunTxt,"graphic | ",format="(3a)"
printf,lunTxt,"data |
",format="(3a)"
endfor
free_lun, lunTxt
TempData = fltarr(4,9,NReg) & PrecData = fltarr(4,9,NReg)
TempData(*,*,*) = MissVal & PrecData(*,*,*) = MissVal
; get region info
for XScenSeas = 0, 3 do begin ; load all data
for XModel = 0, 8 do begin
print, " > Loading: ", ScenSeasCaps[XScenSeas], " ", ModelText[XModel]
TempFile='/cru/mikeh1/f709762/ukcip/rjones/_05deg/cty-v3.'
TempFile=TempFile + ModelText[XModel] + '.' + ScenSeasText[XScenSeas] + '.temp.glo'
LoadGlo, 12, TempSlice, TempFile, FileInfo, Silent=1
PrecFile='/cru/mikeh1/f709762/ukcip/rjones/_05deg/cty-v3.'
PrecFile=PrecFile + ModelText[XModel] + '.' + ScenSeasText[XScenSeas] + '.ppt-pc.glo'
LoadGlo, 12, PrecSlice, PrecFile, FileInfo, Silent=1
for XLon = 0, 719 do begin
for XLat = 0, 359 do begin
if (MapIDLReg(XLon,XLat) NE -999) then begin
TempData(XScenSeas,XModel,MapIDLReg(XLon,XLat))=TempSlice(XLon,XLat)
PrecData(XScenSeas,XModel,MapIDLReg(XLon,XLat))=PrecSlice(XLon,XLat)
endif
endfor
endfor
endfor
endfor
Missing = where(TempData EQ -999.0, Count) & if (Count GT 0) then TempData(Missing) = !Values.F_NaN
Missing = where(PrecData EQ -999.0, Count) & if (Count GT 0) then PrecData(Missing) = !Values.F_NaN
for XScenSeas = 0, 3 do begin ; dump to all-region file
for XVari = 0, 1 do begin
TxtPath='/cru/mikeh1/f709762/ukcip/rjones/_05deg/cty-v3.' + ScenSeasText[XScenSeas]
if (XVari EQ 0) then begin
TxtPath=TxtPath+'.temp.txt'
endif else begin
TxtPath=TxtPath+'.prec.txt'
endelse
openw, lunTxt, TxtPath, /get_lun, error=OpenStatus
if (XVari EQ 0) then begin
printf,lunTxt, strtrim(ScenSeasCaps[XScenSeas],2), $
' temperature changes in the 21st century',format="(2a)"
endif else begin
printf,lunTxt, strtrim(ScenSeasCaps[XScenSeas],2), $
' precipitation changes in the 21st century',format="(2a)"
endelse
printf,lunTxt,'Dr.T.D.Mitchell, Tyndall Centre (www.tyndall.ac.uk), ',DateStamp,format="(2a)"
printf,lunTxt,'',format="(a)"
printf,lunTxt,'The data are from 9 state-of-the-art GCMs reviewed by the IPCC (2001).',format="(a)"
printf,lunTxt,'The values are the changes between 1961-90 and 2070-99.',format="(a)"
if (XVari EQ 0) then begin
printf,lunTxt,'The variable is temperature (T,degC).',format="(a)"
endif else begin
printf,lunTxt,'The variable is precipitation (P,%).',format="(a)"
endelse
printf,lunTxt,'The SRES emissions scenario and season are: ',strtrim(ScenSeasCaps[XScenSeas],2),format="(2a)"
printf,lunTxt,'Dr. Richard Jones (Hadley Centre) interpolated the original GCM data',format="(a)"
printf,lunTxt,'onto a common grid (144*73). Dr.T.D.Mitchell regridded these data (720*360)',format="(a)"
printf,lunTxt,'and aggregated the land grid-boxes into countries.',format="(a)"
printf,lunTxt,'',format="(a)"
printf,lunTxt,'These data may be freely used for non-commerical purposes on condition that',format="(a)"
printf,lunTxt,'the following source is acknowledged wherever the data are used:',format="(a)"
printf,lunTxt,'Mitchell,T.D., Hulme,M., and New,M., 2002: Climate data for political areas. Area 34:109-112',format="(a)"
printf,lunTxt,'',format="(a)"
printf,lunTxt,'COUNTRY',ModelText(*),format="(a20,9a9)"
for XReg = 0, (NReg-1) do begin
if (XVari EQ 0) then begin
printf,lunTxt,RegName(RegNameSort(XReg)),TempData(XScenSeas,*,RegNameSort(XReg)), $
format="(a20,9f9.2)"
endif else begin
printf,lunTxt,RegName(RegNameSort(XReg)),PrecData(XScenSeas,*,RegNameSort(XReg)), $
format="(a20,9f9.2)"
endelse
endfor
free_lun, lunTxt
endfor
endfor
ScatterTemp = fltarr(9) & ScatterPrec = fltarr(9)
XPixels=20 & YPixels=16
PlotCorners=fltarr(4,4)
for XRow = 0,1 do begin
for XCol = 0,1 do begin
XPlot=(XRow*2)+XCol
PlotCorners(XPlot,1) = 0.50-(XRow*0.40) & PlotCorners(XPlot,3) = 0.75-(XRow*0.40)
PlotCorners(XPlot,0) = 0.10+(XCol*0.33) & PlotCorners(XPlot,2) = 0.35+(XCol*0.33)
endfor
endfor
print, " > Plotting each region to .eps ..."
for XReg = 0, (NReg-1) do begin
TxtPath='/cru/mikeh1/f709762/ukcip/rjones/_05deg/cty-v3.' + RegNameCompress(XReg) + '.txt'
openw, lunTxt, TxtPath, /get_lun, error=OpenStatus
printf,lunTxt,strtrim(RegName(XReg),2),': climate changes in the 21st century',format="(2a)"
printf,lunTxt,'Dr.T.D.Mitchell, Tyndall Centre (www.tyndall.ac.uk), ',DateStamp,format="(2a)"
printf,lunTxt,'',format="(a)"
printf,lunTxt,'The data are from 9 state-of-the-art GCMs reviewed by the IPCC (2001).',format="(a)"
printf,lunTxt,'The values are the changes between 1961-90 and 2070-99.',format="(a)"
printf,lunTxt,'The two variables are temperature (T,degC) and precipitation (P,%).',format="(a)"
printf,lunTxt,'There are 2 SRES emissions scenarios (A2,B2) and 2 seasons (DJF,JJA).',format="(a)"
printf,lunTxt,'Dr. Richard Jones (Hadley Centre) interpolated the original GCM data',format="(a)"
printf,lunTxt,'onto a common grid (144*73). Dr.T.D.Mitchell regridded these data (720*360)',format="(a)"
printf,lunTxt,'and aggregated the land grid-boxes into countries.',format="(a)"
printf,lunTxt,'',format="(a)"
printf,lunTxt,'These data may be freely used for non-commerical purposes on condition that',format="(a)"
printf,lunTxt,'the following source is acknowledged wherever the data are used:',format="(a)"
printf,lunTxt,'Mitchell,T.D., Hulme,M., and New,M., 2002: Climate data for political areas. Area 34:109-112',format="(a)"
printf,lunTxt,'',format="(a)"
printf,lunTxt,"MODEL"," T-A2-DJF"," T-A2-JJA"," T-B2-DJF"," T-B2-JJA",$
" P-A2-DJF"," P-A2-JJA"," P-B2-DJF"," P-B2-JJA",format="(a12,8a9)"
for XModel = 0, 8 do begin
printf,lunTxt,GCMText(XModel),TempData(0,XModel,XReg),TempData(1,XModel,XReg),$
TempData(2,XModel,XReg),TempData(3,XModel,XReg),PrecData(0,XModel,XReg),$
PrecData(1,XModel,XReg),PrecData(2,XModel,XReg),PrecData(3,XModel,XReg),format="(a12,8f9.2)"
endfor
free_lun, lunTxt
EPSPath='/cru/mikeh1/f709762/ukcip/rjones/_05deg/cty-v3.' + RegNameCompress(XReg) + '.eps'
Set_Plot, 'ps', /copy
device, filename=EPSPath, bits_per_pixel=8, xsize=XPixels, ysize=YPixels, /Color, /Encapsulated
read_jpeg, '/cru/u2/f709762/goglo/ref/tyn-logo-torok.jpg', Logo, LogoCT, colors=256, dither=1, /two_pass_quantize
tvlct, Red,Green,Blue, /get ; get old colors
tvlct, LogoCT(*,0), LogoCT(*,1), LogoCT(*,2)
tv, Logo, 0.04,0.89,xsize=0.834*0.3*(7.0/9.0),ysize=0.184*0.3,/normal
tvlct, Red,Green,Blue ; restore old colors
xyouts,0.95,0.93,'Dr. Timothy D. Mitchell',/normal,alignment=1,charsize=0.7,charthick=1,font=5
xyouts,0.95,0.91,DateStamp,/normal,alignment=1,charsize=0.7,charthick=1,font=5
xyouts,0.95,0.89,'www.tyndall.ac.uk',/normal,alignment=1,charsize=0.7,charthick=1,font=5
xyouts,0.50,0.93,strtrim(RegName(XReg),2),alignment=0.5,charsize=2,charthick=2,font=5,/normal
xyouts,0.50,0.89,'21st century climate changes',alignment=0.5,charsize=1,charthick=1,font=5,/normal
MaxTemp=max(TempData(*,*,XReg)) & MinTemp=min(TempData(*,*,XReg))
MaxPrec=max(PrecData(*,*,XReg)) & MinPrec=min(PrecData(*,*,XReg))
if (MaxTemp LT 1) then MaxTemp=1
if (MinTemp GT -1) then MinTemp=-1
if (MaxPrec LT 5) then MaxPrec=5
if (MinPrec GT -5) then MinPrec=-5
for XScenSeas = 0, 3 do begin ; plot all data
for XModel = 0, 8 do begin
ScatterTemp[XModel] = TempData[XScenSeas,XModel,XReg]
ScatterPrec[XModel] = PrecData[XScenSeas,XModel,XReg]
endfor
plot, ScatterTemp, ScatterPrec, $ ; to get good data limits
Background=White,Color=Black,$ ; colour
Title=ScenSeasCaps(XScenSeas),$ ; plot title
XTitle=AxisXLabel ,$ ; x axis title
YTitle=AxisYLabel,$ ; y axis title
XTickLen=1.0,YTickLen=1.0,XGridStyle=1,YGridStyle=1, $ ; grid
XRange=[MinTemp,MaxTemp],YRange=[MinPrec,MaxPrec],$ ; axis limits
font=5,charsize=1.0,xcharsize=0.7,ycharsize=0.7, $ ; character sizes
/NoData,position=PlotCorners[XScenSeas,*],/NoErase
for XModel = 0, 8 do begin ; plot data
usersym,Exes,Wyes,/fill,color=ModelColor[XModel]
SingleTemp[0]=ScatterTemp[XModel] & SinglePrec[0]=ScatterPrec[XModel]
oplot, SingleTemp,SinglePrec, psym=-8
endfor
plots,!X.CRange,[0,0],linestyle=0,thick=2,color=Black,/data ; plot heavy axes
plots,[0,0],!Y.CRange,linestyle=0,thick=2,color=Black,/data
endfor
xyouts,0.73,0.80,'KEY to models',/normal,alignment=0,charsize=1,charthick=1,font=5
for XModel = 0, 8 do begin ; key
usersym,Exes,Wyes,/fill,color=ModelColor[XModel]
plots, 0.74,0.80-((XModel+1)*0.03), psym=-8, /normal
xyouts, 0.76,0.795-((XModel+1)*0.03), GCMText[XModel],/normal,alignment=0,charsize=0.7, $
charthick=1,font=5,color=Black
xyouts, 0.88,0.795-((XModel+1)*0.03), CtyText[XModel],/normal,alignment=0,charsize=0.7, $
charthick=1,font=5,color=Black
endfor
xyouts,0.73,0.46,'INFORMATION',/normal,alignment=0,charsize=1,charthick=1,font=5
for XInfo = 0, (NInfo-1) do begin
xyouts, 0.73,0.44-((XInfo+1)*0.02), InfoText[XInfo],/normal,alignment=0,charsize=0.7, $
charthick=1,font=5,color=Black
endfor
device, /close
set_plot, 'X'
endfor
end