16

When I try to plot something with linespoints, unless the values that go to the x axis are already sorted within the file, each point gets connected to the point that is on the next line of the file:

enter image description here

Only when I sort the values in the file I can get the desired effect, which is that each point gets connected to the point with one smaller and one larger x value:

enter image description here

Is there a way to do this within gnuplot, without having to sort the files in bash?

1

1 Answer 1

20

Gnuplot offers some smoothing filters which as first step sort the data by their x-values. plot ... smooth unique first sorts the data points by their x-value and for equal x-values it computes the average y-value. So if you are sure that the x-values are unique, then you can use this option. Otherwise you must use an external tool or script to do the sorting with plot '< sort file.dat'

Sign up to request clarification or add additional context in comments.

2 Comments

plot '< sort -nk2 file.dat' u 2:3 will use a numerical sort on column 2. This way the header will stay in its place, and you can use choose the column for x-values.
Just in case it helps someone: I needed to sort by Y values and make sure scientific notation was properly parsed: plot '< LC_NUMERIC=US_en sort --general-numeric-sort --key 2 --reverse "file.dat"' using 0:2. It's useful in order to display en.wikipedia.org/wiki/Load_duration_curve

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.