How to mark 90 percentile in gnuplot

gnuplot

Solution

I can't see any way to do this in gnuplot by itself, but it's not hard to do using `python` --

# percent90.py
import sys
def to_num(iterable):
    for line in iterable:
        columns = line.split()  # split into columns
        if not columns:  # empty line
            continue
        try:
            yield float(columns[1])  # This is a good number -- Yield it and keep going
        except ValueError:  # Not a number on the line
            pass            # just keep going -- do nothing
        except IndexError:
            print line

with open(sys.argv[1]) as fin:
     data = sorted(to_num(fin))

top_10 = data[int(len(data)*0.9):]  #top 10 percent of the data
print(top_10[0])

which you can call something like:

python percent90.py path/to/datafile

This will tell you where to place your mark. As for marking it, I would probably do something like this in gnuplot:

YVAL = `python percent90.py path/to/datafile`
set arrow 1 from graph 0,first YVAL to graph 1,first YVAL ls 1 nohead front

Problem

How to mark 90 percentile in gnu plot. sample needed ``` plot [][] "fle.txt" using 1:2 with lines ``` This is how i plot the graph i want to mark the 90% in the graph this is my data set ``` time(seconds) frequency cumulativeFrequency 10 2 2 11 6 8 12 8 16 13 10 26 14 7 33 15 5 38 16 5 43 17 4 47 18 2 49 ```

Original source