[ncl-talk] Fwd: problem with plotting "t-test" pattern with precipitation change
Mary Haley
haley at ucar.edu
Tue Oct 27 13:06:55 MDT 2015
If you want help with a script, it helps if you can provide a *clean*
script that demonstrates the problem, rather than a long script where we
have no idea what line number the error is occurring on. It's very
time-consuming for us to look through scripts like this, especially when we
can't execute them.
My guess is that the problem is with this line:
t_test_plot = gsn_csm_contour(wks,alphat,rest_test)
If "alphat" is a 1D array, then NCL will see this as "unstructured" data,
and in order to draw contours in a rectangular data space, you need to
provide X and Y coordinate locations of each point. That's why you are
getting an error saying that you need to set sfXArray and sfYArray. For
more information on contouring 1D data, see:
http://www.ncl.ucar.edu/Applications/contour1d.shtml
I'm not sure if you really meant to contour a 1D array, however. You may
need to recheck that you are doing your calculations correctly.
--Mary
On Mon, Oct 26, 2015 at 12:22 PM, Moustapha Tall <tall.moustapha89 at gmail.com
> wrote:
>
> ---------- Forwarded message ----------
> From: Moustapha Tall <tall.moustapha89 at gmail.com>
> Date: 2015-10-26 16:17 GMT+00:00
> Subject: problem with plotting "t-test" pattern with precipitation change
> To: ncl-talk-request at ucar.edu
>
>
> Hi NCL webmasters and all,
> I am tryning to plot the mid-century precipitation change for
> a given model, thus plotting the rainfall change patterns with "stippling"
> where
> they are statistically significant at the 95 percent confidence level
> (based on a t-test).
> I get this message:
> (0) Error: scalar_field: If the input data is 1-dimensional, you must
> set sfXArray and sfYArray to 1-dimensional arrays of the same length.
> warning:create: Bad HLU id passed to create, ignoring it
>
> My script is below,
>
>
> ;**************************************************************************************
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
>
> begin
>
>
> ;*****************************************************************************************
> ; Creating Function to Read at once Precip and Convert Calendar to Human
> Readable YYYYMM
>
> ;*****************************************************************************************
>
> undef("getPrecip")
> function getPrecip(fname[1]:string, vname[1]:string)
>
> begin
> f = addfile(fname, "r")
>
> x = f->$vname$(0,:,:) ; read specified time period
>
> return(x)
> end
>
> ;*****************************************************************************************
> ; Reading Precip for each File for the Defined Period ymStrt - ymLast
> ;*****************************************************************************************
>
>
> gcmpre1 =
> getPrecip("remap_reg_jjas_mm_mmean_EC-EARTH_1976-2005.nc","pr")
>
> gcmfut1 =
> getPrecip("remap_pr_wafr_jjas_EC-EARTH_rcp45_2021-2050.nc","pr")
>
>
> ;*******************************************************************************
> ;Taking JJAS difference
>
> ;*******************************************************************************
>
> diff1 = gcmfut1 - gcmpre1
> diff1 = 100*diff1/mask(gcmpre1,(gcmpre1.ge.0.9),True)
> diff1 at long_name = " RCP4.5 - Present JJAS Precipitation (%)"
> diff1 at units = " "
> printVarSummary(diff1) ; print a summary of the variable
> copy_VarCoords(gcmpre1,diff1)
>
> ;************************************************************************************************************
> ; Create graphic array for panel plot and Open a Work Station
>
> ;************************************************************************************************************
>
> plots = new(1,graphic) ; Open a variale
> plots to store 4 Figures
> wks = gsn_open_wks("ps","Precip_JJAS_Change") ; open a
> workstation
> gsn_define_colormap(wks, "CBR_drywet")
>
>
> ;*************************************************************************************************************
> ; Create plots options
>
> ;*************************************************************************************************************
>
> res = True ; plot options desired
> res at gsnSpreadColors = True ; span full colormap
> res at gsnDraw = False ; don't draw
> res at gsnFrame = False ; don't advance frame
> res at cnFillOn = True ; turn on color fill
>
> res at cnLevelSelectionMode = "ExplicitLevels" ;
> set explicit contour levels
> res at cnLevels =
> (/-75.,-50.,-25.,-10.,-5.,5.,10.,25.,50.,75./)
>
> res at cnLinesOn = False ; turn off contour lines
> res at cnLineLabelsOn = False ; turn off the values
> that would be on the contours
> res at mpFillOn = False ; turn off gray
> continents
> res at gsnMaximize = True ; Use the full page
> res at gsnPaperOrientation = "portrait" ; Change orientation
> res at mpProjection = "Mercator"
> res at mpLimitMode = "LatLon"
> res at gsnAddCyclic = False ; Regional data
> ; res at mpMaxLatF = max(latitude) ; Taking the whole
> domain
> ; res at mpMinLatF = min(latitude)
> ; res at mpMaxLonF = max(longitude)
> ; res at mpMinLonF = min(longitude)
>
> res at mpMaxLatF = 25.0 ; Zoom in West Africa
> res at mpMinLatF = -5.0
> res at mpMaxLonF = 25.0
> res at mpMinLonF = -25.0
>
> res at mpOutlineBoundarySets = "National" ; Display the
> conutries borders
> res at mpOutlineOn = True ; Turn on the outline of
> the map
> res at mpGeophysicalLineThicknessF = 3.0 ; Increase the thickness
> of map border
> res at pmTickMarkDisplayMode = "Always" ; Turn on map
> tickmarks, i.e. writing lons and lats along the axes
> res at lbLabelBarOn = False ; turn off
> individual colorbars
>
> ;*********************************************************************************************************************
> ; Changing the font seize
>
> ;*********************************************************************************************************************
> res at tmXBLabelFontHeightF = 0.02 ; resize tick labels
> for X axis
> res at tmYLLabelFontHeightF = 0.02 ; resize tick labels
> for Y axis
> ; change label
> spacing to avoid overlap
> ;res at lbLabelStride = 1 ; and write every
> other label
> res at lbLabelFontHeightF = 0.018 ; change the size of
> the label bar
> ;res at tiMainString = "1st Plot Test" ; Provide a main Tile
>
> res at gsnStringFontHeightF = 0.025 ; Increase the title
> font size (long_name)
>
>
> ;*******************************************************************************************************
> ; setting and plotting the t-test significance
>
> ;*******************************************************************************************************
> aveX = dim_avg_n_Wrap(gcmpre1,0) ; average over the 0th dim
> varX = dim_variance_n_Wrap(gcmpre1,0) ; compute variance
> printVarSummary(aveX)
> printVarSummary(varX)
> aveY = dim_avg_n_Wrap(gcmfut1,0) ; average over the 0th dim
> varY = dim_variance_n_Wrap(gcmfut1,0) ; compute variance
> printVarSummary(aveY)
> printVarSummary(varY)
> sX = dimsizes (aveX)
> sY = dimsizes (aveY) ; different sizes
> alphat = 100.*(1. -ttest(aveX,varX,sX, aveY,varY,sY, False, False))
> ;;;;;;;;;;;;;creating ressources for T-TEST;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> rest_test = True ; plot options desired
> rest_test at gsnSpreadColors = True ; span full colormap
> rest_test at gsnDraw = False ; don't draw
> rest_test at gsnFrame = False ; don't advance frame
> rest_test at cnFillOn = True ; turn on color
> fill
> rest_test at lbLabelBarOn = False ; turn off
> individual colorbars
> rest_test at cnLinesOn = False ; turn off
> individual colorbars
> rest_test at cnLineLabelsOn = False ; turn off individual
> colorbars
> rest_test at cnInfoLabelOn = False ; turn off
> individual colorbars
> rest_test at cnLevelSpacingF = 0.05
> rest_test at cnFillDotSizeF = 0.004
> t_test_plot = gsn_csm_contour(wks,alphat,rest_test)
> opt_t_test = True
> opt_t_test at gsnShadeFillType = "Pattern"
> opt_t_test at gsnShadeLow = 17
> plot_t_test_plot =
> gsn_contour_shade(t_test_plot,0.05,999.,opt_t_test)
>
> ;*******************************************************************************************************
> ; Displaying the Panel Plot
>
> ;*******************************************************************************************************
>
> plots(0) = gsn_csm_contour_map(wks,diff1,res)
>
> overlay(plots(0), plot_t_test_plot)
>
> pnlres = True ; Add panel
> options
> pnlres at gsnFrame = False ; Don't
> frame yet
> ;pnlres at txString = "Default X and Y positions of all plots" ; add
> main title for the panel
> pnlres at gsnPanelLabelBar = True ; Setting a
> common colorbar
> pnlres at lbLabelFontHeightF = 0.02 ; Increase
> font size of the numbers in the label bar
> pnlres at pmLabelBarWidthF = 0.9 ; label bar
> width
> pnlres at pmLabelBarHeightF = 0.08 ; label bar
> height
> pnlres at pmLabelBarOrthogonalPosF = 0.002 ; move the
> labelbar up and down
> pnlres at pmLabelBarParallelPosF = 0.03 ;move the
> labelbar left or right
> pnlres at lbLabelStride = 1 ; and
> write every other label
> ; pnlres at lbLabelAutoStride = True ; Optimal
> labels, i.e. avoid overlap
> pnlres at gsnPanelDebug = True ; To get
> information from panel
> pnlres at gsnPanelFigureStrings= (/"a)"/) ; add strings to panel
> pnlres at gsnPanelFigureStringsFontHeightF = 0.016 ; Increase
> the size of these strings
> pnlres at gsnPanelFigureStringsPerimOn = False ;
> Remove the box around these strings
> pnlres at amJust = "TopLeft" ; Where to
> put these strings
> pnlres at gsnPanelYWhiteSpacePercent = 5 ; Adds the
> white space to the panel plot
> pnlres at gsnPanelXWhiteSpacePercent = 5 ; Adds the
> white space to the panel plot
> pnlres at gsnPanelTop = 1.
> pnlres at gsnPanelBottom = 0.
> gsn_panel(wks,plots,(/1,1/),pnlres)
>
> end
>
> ;**************************************************************************************
> and
>
> Variable: diff1
> Type: float
> Total Size: 33600 bytes
> 8400 values
> Number of Dimensions: 2
> Dimensions and sizes: [70] x [120]
> Coordinates:
> Number Of Attributes: 3
> units :
> long_name : RCP4.5 - Present JJAS Precipitation (%)
> _FillValue : 1e+20
>
>
> Variable: aveX
> Type: float
> Total Size: 480 bytes
> 120 values
> Number of Dimensions: 1
> Dimensions and sizes: [lon | 120]
> Coordinates:
> lon: [-29.75..29.75]
> Number Of Attributes: 12
> associated_files : baseURL:
> http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile:
> gridspec_atmos_fx_EC-EARTH_historical_r0i0p0.nc areacella:
> areacella_fx_EC-EARTH_historical_r0i0p0.nc
> history : 2012-05-10T11:28:56Z altered by CMOR: replaced missing
> value flag (1e+28) with standard missing value (1e+20).
> 2012-05-10T11:28:56Z altered by CMOR: Converted type from 'd' to 'f'.
> 2012-05-10T11:28:56Z altered by CMOR: Inverted axis: lat.
> cell_methods : time: mean (interval: 3 hours)
> original_name : TP=LSP+CP
> comment : at surface; includes both liquid and solid phases from all
> types of clouds (both large-scale and convective)
> missing_value : 1e+20
> _FillValue : 1e+20
> units : kg m-2 s-1
> long_name : Precipitation
> standard_name : precipitation_flux
> time : 7699.5
> average_op_ncl : dim_avg_n over dimension(s): lat
>
> Variable: varX
> Type: float
> Total Size: 480 bytes
> 120 values
> Number of Dimensions: 1
> Dimensions and sizes: [lon | 120]
> Coordinates:
> lon: [-29.75..29.75]
> Number Of Attributes: 12
> associated_files : baseURL:
> http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile:
> gridspec_atmos_fx_EC-EARTH_historical_r0i0p0.nc areacella:
> areacella_fx_EC-EARTH_historical_r0i0p0.nc
> history : 2012-05-10T11:28:56Z altered by CMOR: replaced missing
> value flag (1e+28) with standard missing value (1e+20).
> 2012-05-10T11:28:56Z altered by CMOR: Converted type from 'd' to 'f'.
> 2012-05-10T11:28:56Z altered by CMOR: Inverted axis: lat.
> cell_methods : time: mean (interval: 3 hours)
> original_name : TP=LSP+CP
> comment : at surface; includes both liquid and solid phases from all
> types of clouds (both large-scale and convective)
> missing_value : 1e+20
> _FillValue : 1e+20
> units : kg m-2 s-1
> long_name : Precipitation
> standard_name : precipitation_flux
> time : 7699.5
> variance_op_ncl : dim_variance_n over dimension(s): lat
>
> Variable: aveY
> Type: float
> Total Size: 480 bytes
> 120 values
> Number of Dimensions: 1
> Dimensions and sizes: [lon | 120]
> Coordinates:
> lon: [-29.75..29.75]
> Number Of Attributes: 12
> associated_files : baseURL:
> http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile:
> gridspec_atmos_fx_EC-EARTH_rcp45_r0i0p0.nc areacella:
> areacella_fx_EC-EARTH_rcp45_r0i0p0.nc
> history : 2012-03-19T15:13:27Z altered by CMOR: replaced missing
> value flag (1e+28) with standard missing value (1e+20).
> 2012-03-19T15:13:27Z altered by CMOR: Inverted axis: lat.
> cell_methods : time: mean (interval: 3 hours)
> original_name : TP=LSP+CP
> comment : at surface; includes both liquid and solid phases from all
> types of clouds (both large-scale and convective)
> missing_value : 1e+20
> _FillValue : 1e+20
> units : kg m-2 s-1
> long_name : Precipitation
> standard_name : precipitation_flux
> time : 10987
> average_op_ncl : dim_avg_n over dimension(s): lat
>
> Variable: varY
> Type: float
> Total Size: 480 bytes
> 120 values
> Number of Dimensions: 1
> Dimensions and sizes: [lon | 120]
> Coordinates:
> lon: [-29.75..29.75]
> Number Of Attributes: 12
> associated_files : baseURL:
> http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile:
> gridspec_atmos_fx_EC-EARTH_rcp45_r0i0p0.nc areacella:
> areacella_fx_EC-EARTH_rcp45_r0i0p0.nc
> history : 2012-03-19T15:13:27Z altered by CMOR: replaced missing
> value flag (1e+28) with standard missing value (1e+20).
> 2012-03-19T15:13:27Z altered by CMOR: Inverted axis: lat.
> cell_methods : time: mean (interval: 3 hours)
> original_name : TP=LSP+CP
> comment : at surface; includes both liquid and solid phases from all
> types of clouds (both large-scale and convective)
> missing_value : 1e+20
> _FillValue : 1e+20
> units : kg m-2 s-1
> long_name : Precipitation
> standard_name : precipitation_flux
> time : 10987
> variance_op_ncl : dim_variance_n over dimension(s): lat
> (0) Error: scalar_field: If the input data is 1-dimensional, you must
> set sfXArray and sfYArray to 1-dimensional arrays of the same length.
> warning:create: Bad HLU id passed to create, ignoring it
>
>
> Can anyone help me for that!
>
>
> cheers
>
>
> --
>
>
>
>
> --
> Tall Moustapha,
> Laboratoire de Physique de l'Atmosphère et de l'Océan Siméon-Fongang
> (LPAO-SF)
> École Supérieure Polytechnique (ESP) / Université Cheikh Anta DIOP (UCAD)
> BP: 5085 Dakar fann ; Fax : (+221) 33 825 93 64
> Tel perso : (+221) 77 730 80 11
> Dakar / Sénégal
>
>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20151027/de17d068/attachment.html
More information about the ncl-talk
mailing list