Given, discharge data alone for each month in each year, is it possible to calculate the flow duration curve? Some of the discharge values in some months were found to be 0. Do we need to consider those values?


Spreadsheets work well for this.

You have 12×12 observations so use 144+1 = 145 as the number of observations for calculating your probabilities.

Put your discharge data in a column and sort from highest to lowest. Put a column of Rankings next to it and number from 1 up to your maximum (1 to 144). Put a column next to that and calculate your probability of exceeding each discharge value:

P = Ranking×100/145

(P as a percent)

Graph discharge vs. P.

You need to consider your 0 discharge months in determining the number of periods but you don't need to calculate P for them. That's handy if you don't want errors in plotting log discharge vs. P.

  • 1
    $\begingroup$ I would recommend moving away from spreadsheets where possible, there are handy scripts already built to do this type of stuff, such as the fdc function in the hydroTSM package in R. That being said, useful to know how to do it manually too. $\endgroup$
    – Rob
    Aug 17 '17 at 14:26
  • 1
    $\begingroup$ R certainly has a lot of power. I actually use an Access database form to extract the data and then it automatically opens Excel and plots the data. Turns out it is much more efficient for plotting the P values than an Access function and the graph can be easily tweaked by users. Whatever gets the job done. $\endgroup$
    – haresfur
    Aug 17 '17 at 21:40
  • $\begingroup$ I also recommend using a script like R, Python, Matlab and not excel. My datasets are most of the time too large (hourly values for example) for spreadsheets like Excel. But it depends, of course, on your dataset and personal preferences. $\endgroup$
    – 3TW3
    Aug 23 '17 at 10:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.