From debasish.hazra5 at gmail.com Fri Sep 4 09:26:38 2026 From: debasish.hazra5 at gmail.com (Debasish Hazra) Date: Fri, 4 Sep 2026 11:26:38 -0400 Subject: [ncl-talk] data match days before plot In-Reply-To: References: Message-ID: Thanks Dave. Able to bring both data in julian day format and common starting time. But having issues with two unequal records, one from the model and one from the station observations (several days in obs are missing). Attached are two examples of output. And the missing days are random among different stations. Not able to use regline_stats etc because of unequal length. How to match these two to create the same length considering the random nature of missing days in Station obs. Any help would be appreciated. Thanks Debasish On Sun, Aug 30, 2026 at 11:56?AM Dave Allured - NOAA Affiliate < dave.allured at noaa.gov> wrote: > Oops, I forgot that you are making a scatter plot. This means that you > need an X axis that is linear in time. Therefore, you must use a numeric > time line, not a decimal coded time line. So use the method that I > mentioned first, to convert both inputs to a common time line such as "days > since". > > > On Sat, Aug 29, 2026 at 10:53?AM Dave Allured - NOAA Affiliate < > dave.allured at noaa.gov> wrote: > >> Put both the obs and model data on a common time line. For the obs >> (station) data, it looks like you need to combine the year number into the >> calculation. You did not show any time information for the model data, but >> I am sure it is something simple like "days since" or "hours since". I >> suggest convert both to "days since", since the obs data is already based >> on day numbers. >> >> Also when calculating the new time lines, you must pick a common starting >> point. I suggest YYYY January 1, where YYYY is the starting year of either >> data set. >> >> Alternatively, you could use a decimal coded time line such as YYYYDDD or >> YYYYMMDD, rather than a pure numeric time line. With this type, dates are >> absolute in one sense, so there is no need to pick a common starting date. >> >> For the scatter plot, you compare both time lines and pick out the dates >> in common. This is possible with any kind of time line, as long as both >> are computed accurately, and roundoff error is resolved. My final advice >> is, pick whichever method seems easiest to create the time lines. >> >> NCL has date functions to assist with creating and converting time lines. >> https://www.ncl.ucar.edu/Document/Functions/date.shtml >> >> >> On Thu, Aug 27, 2026 at 2:20?PM Debasish Hazra via ncl-talk < >> ncl-talk at mailman.ucar.edu> wrote: >> >>> Hi, >>> I am trying to plot a scatter plot using Ncl and plotting daily averaged >>> station data vs model output using more than 2 years data. However, I am >>> seeing more than one data gaps in station data, like below (first value is >>> in Julian days, second is precip value for a station of that day), but >>> model data has values in all days. >>> >>> 350,0.418833 >>> 351,0.494576 >>> 355,0.389460 >>> 356,0.406334 >>> ...SNIP... >>> 362,0.113083 >>> 363,0.124250 >>> 364,0.081895 >>> 365,0.159218 >>> 2,0.125749 >>> 3,0.217326 >>> 4,0.276310 >>> >>> How to match those two data set in terms of exact days before the >>> scatter plot ? Any help ? >>> Thanks >>> Debasish >>> >> -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: ModeOutput_Stn1_20231216-20241130.csv Type: text/csv Size: 4524 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: Station1_202312-202411.csv Type: text/csv Size: 3484 bytes Desc: not available URL: From dave.allured at noaa.gov Fri Sep 4 13:29:56 2026 From: dave.allured at noaa.gov (Dave Allured - NOAA Affiliate) Date: Fri, 4 Sep 2026 13:29:56 -0600 Subject: [ncl-talk] data match days before plot In-Reply-To: References: Message-ID: Debasish, attached is a demo program to align station data with model data. Also see attached output. There is more than one way to do this. I decided to create integer dates in YYYYDDD format, to be able to cross-reference the dates. This seemed like the simplest way, given the format of your input data. This demo adds an extra "column" for station data values, next to the model data values. Then a search loop plus NCL's "ind" function is used, to find each position where the station date matches the model date. You will need to find a way to add the year number to both model and station data that you showed. On Fri, Sep 4, 2026 at 9:27?AM Debasish Hazra wrote: > Thanks Dave. Able to bring both data in julian day format and common > starting time. But having issues with two unequal records, one from the > model and one from the station observations (several days in obs are > missing). Attached are two examples of output. And the missing days are > random among different stations. Not able to use regline_stats etc because > of unequal length. How to match these two to create the same length > considering the random nature of missing days in Station obs. Any > help would be appreciated. > > Thanks > Debasish > > On Sun, Aug 30, 2026 at 11:56?AM Dave Allured - NOAA Affiliate < > dave.allured at noaa.gov> wrote: > >> Oops, I forgot that you are making a scatter plot. This means that you >> need an X axis that is linear in time. Therefore, you must use a numeric >> time line, not a decimal coded time line. So use the method that I >> mentioned first, to convert both inputs to a common time line such as "days >> since". >> >> >> On Sat, Aug 29, 2026 at 10:53?AM Dave Allured - NOAA Affiliate < >> dave.allured at noaa.gov> wrote: >> >>> Put both the obs and model data on a common time line. For the obs >>> (station) data, it looks like you need to combine the year number into the >>> calculation. You did not show any time information for the model data, but >>> I am sure it is something simple like "days since" or "hours since". I >>> suggest convert both to "days since", since the obs data is already based >>> on day numbers. >>> >>> Also when calculating the new time lines, you must pick a common >>> starting point. I suggest YYYY January 1, where YYYY is the starting year >>> of either data set. >>> >>> Alternatively, you could use a decimal coded time line such as YYYYDDD >>> or YYYYMMDD, rather than a pure numeric time line. With this type, dates >>> are absolute in one sense, so there is no need to pick a common starting >>> date. >>> >>> For the scatter plot, you compare both time lines and pick out the dates >>> in common. This is possible with any kind of time line, as long as both >>> are computed accurately, and roundoff error is resolved. My final advice >>> is, pick whichever method seems easiest to create the time lines. >>> >>> NCL has date functions to assist with creating and converting time lines. >>> https://www.ncl.ucar.edu/Document/Functions/date.shtml >>> >>> >>> On Thu, Aug 27, 2026 at 2:20?PM Debasish Hazra via ncl-talk < >>> ncl-talk at mailman.ucar.edu> wrote: >>> >>>> Hi, >>>> I am trying to plot a scatter plot using Ncl and plotting daily >>>> averaged station data vs model output using more than 2 years data. >>>> However, I am seeing more than one data gaps in station data, like below >>>> (first value is in Julian days, second is precip value for a station of >>>> that day), but model data has values in all days. >>>> >>>> 350,0.418833 >>>> 351,0.494576 >>>> 355,0.389460 >>>> 356,0.406334 >>>> ...SNIP... >>>> 362,0.113083 >>>> 363,0.124250 >>>> 364,0.081895 >>>> 365,0.159218 >>>> 2,0.125749 >>>> 3,0.217326 >>>> 4,0.276310 >>>> >>>> How to match those two data set in terms of exact days before the >>>> scatter plot ? Any help ? >>>> Thanks >>>> Debasish >>>> >>> -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- ; Align station data to model data, by year and day number. ; NCL mailing list, 2026 Sept 4 begin model_source = (/ \ 2021, 363, 0.094491, \ 2021, 364, 0.094271, \ 2021, 365, 0.077117, \ 2022, 1 , 0.079632, \ 2022, 2 , 0.092311, \ 2022, 3 , 0.102403 /) model_year = toint (model_source(0::3)) model_day = toint (model_source(1::3)) model_values = model_source(2::3) print ("Raw model data:") print (model_year + sprintf ("%5.f", model_day) + " " + model_values) print ("") print ("Create fake station data by selecting subset of model data:") station_values = model_values(1:4) + 77 ; add 77 to make traceable fake data station_year = model_year(1:4) station_day = model_day(1:4) station_day(2) = 555 ; create intentional mistake in dates print (station_year + sprinti ("%5i", station_day) + " " + station_values) model_date = model_year + sprinti ("%3.3i", model_day) station_date = station_year + sprinti ("%3.3i", station_day) print ("") print ("Model dates as YYYYDDD:") print (model_date+"") print ("") print ("Station dates as YYYYDDD:") print (station_date+"") print ("") print ("Create new column for station values next to model values.") nmodel = dimsizes (model_day) missing_value = -999.0 station_values_aligned = new (nmodel, float, missing_value) print ("") print ("Locate each station date within model dates.") ndates_station = dimsizes (station_day) do i = 0, ndates_station-1 inds := ind (station_date(i) .eq. model_date) xind = inds(0) if (ismissing (xind)) then print (" Station date not found within model dates: " + station_date(i)) continue end if station_values_aligned(xind) = station_values(i) end do print ("") print (model_year + sprinti ("%5i", model_day) \ + sprintf ("%12.4f", model_values) \ + sprintf ("%12.4f", station_values_aligned)) end -------------- next part -------------- (0) Raw model data: (0) 2021 363 0.094491 (1) 2021 364 0.094271 (2) 2021 365 0.077117 (3) 2022 1 0.079632 (4) 2022 2 0.092311 (5) 2022 3 0.102403 (0) (0) Create fake station data by selecting subset of model data: (0) 2021 364 77.0943 (1) 2021 365 77.0771 (2) 2022 555 77.0796 (3) 2022 2 77.0923 (0) (0) Model dates as YYYYDDD: (0) 2021363 (1) 2021364 (2) 2021365 (3) 2022001 (4) 2022002 (5) 2022003 (0) (0) Station dates as YYYYDDD: (0) 2021364 (1) 2021365 (2) 2022555 (3) 2022002 (0) (0) Create new column for station data next to model data. (0) (0) Locate each station date within model dates. (0) Station date not found within model data: 2022555 (0) (0) 2021 363 0.0945 -999.0000 (1) 2021 364 0.0943 77.0943 (2) 2021 365 0.0771 77.0771 (3) 2022 1 0.0796 -999.0000 (4) 2022 2 0.0923 77.0923 (5) 2022 3 0.1024 -999.0000 From debasish.hazra5 at gmail.com Fri Sep 4 21:37:25 2026 From: debasish.hazra5 at gmail.com (Debasish Hazra) Date: Fri, 4 Sep 2026 23:37:25 -0400 Subject: [ncl-talk] data match days before plot In-Reply-To: References: Message-ID: Many thanks Dave, able to follow the instructions and create the plot. Debasish. On Fri, Sep 4, 2026 at 3:30?PM Dave Allured - NOAA Affiliate < dave.allured at noaa.gov> wrote: > Debasish, attached is a demo program to align station data with model > data. Also see attached output. There is more than one way to do this. I > decided to create integer dates in YYYYDDD format, to be able to > cross-reference the dates. This seemed like the simplest way, given the > format of your input data. > > This demo adds an extra "column" for station data values, next to the > model data values. Then a search loop plus NCL's "ind" function is used, > to find each position where the station date matches the model date. You > will need to find a way to add the year number to both model and station > data that you showed. > > > On Fri, Sep 4, 2026 at 9:27?AM Debasish Hazra > wrote: > >> Thanks Dave. Able to bring both data in julian day format and common >> starting time. But having issues with two unequal records, one from the >> model and one from the station observations (several days in obs are >> missing). Attached are two examples of output. And the missing days are >> random among different stations. Not able to use regline_stats etc because >> of unequal length. How to match these two to create the same length >> considering the random nature of missing days in Station obs. Any >> help would be appreciated. >> >> Thanks >> Debasish >> >> On Sun, Aug 30, 2026 at 11:56?AM Dave Allured - NOAA Affiliate < >> dave.allured at noaa.gov> wrote: >> >>> Oops, I forgot that you are making a scatter plot. This means that you >>> need an X axis that is linear in time. Therefore, you must use a numeric >>> time line, not a decimal coded time line. So use the method that I >>> mentioned first, to convert both inputs to a common time line such as "days >>> since". >>> >>> >>> On Sat, Aug 29, 2026 at 10:53?AM Dave Allured - NOAA Affiliate < >>> dave.allured at noaa.gov> wrote: >>> >>>> Put both the obs and model data on a common time line. For the obs >>>> (station) data, it looks like you need to combine the year number into the >>>> calculation. You did not show any time information for the model data, but >>>> I am sure it is something simple like "days since" or "hours since". I >>>> suggest convert both to "days since", since the obs data is already based >>>> on day numbers. >>>> >>>> Also when calculating the new time lines, you must pick a common >>>> starting point. I suggest YYYY January 1, where YYYY is the starting year >>>> of either data set. >>>> >>>> Alternatively, you could use a decimal coded time line such as YYYYDDD >>>> or YYYYMMDD, rather than a pure numeric time line. With this type, dates >>>> are absolute in one sense, so there is no need to pick a common starting >>>> date. >>>> >>>> For the scatter plot, you compare both time lines and pick out the >>>> dates in common. This is possible with any kind of time line, as long as >>>> both are computed accurately, and roundoff error is resolved. My final >>>> advice is, pick whichever method seems easiest to create the time lines. >>>> >>>> NCL has date functions to assist with creating and converting time >>>> lines. >>>> https://www.ncl.ucar.edu/Document/Functions/date.shtml >>>> >>>> >>>> On Thu, Aug 27, 2026 at 2:20?PM Debasish Hazra via ncl-talk < >>>> ncl-talk at mailman.ucar.edu> wrote: >>>> >>>>> Hi, >>>>> I am trying to plot a scatter plot using Ncl and plotting daily >>>>> averaged station data vs model output using more than 2 years data. >>>>> However, I am seeing more than one data gaps in station data, like below >>>>> (first value is in Julian days, second is precip value for a station of >>>>> that day), but model data has values in all days. >>>>> >>>>> 350,0.418833 >>>>> 351,0.494576 >>>>> 355,0.389460 >>>>> 356,0.406334 >>>>> ...SNIP... >>>>> 362,0.113083 >>>>> 363,0.124250 >>>>> 364,0.081895 >>>>> 365,0.159218 >>>>> 2,0.125749 >>>>> 3,0.217326 >>>>> 4,0.276310 >>>>> >>>>> How to match those two data set in terms of exact days before the >>>>> scatter plot ? Any help ? >>>>> Thanks >>>>> Debasish >>>>> >>>> -------------- next part -------------- An HTML attachment was scrubbed... URL: