Search code examples
gnuplot

How to remove line between "jumping" values, in gnuplot?


I would like to draw a line with plots that contain "jumping" values.

Here is an example: when we have plots of sin(x) for several cycles and plot it, unrealistic line will appear that go across from right to left (as shown in following figure).

One idea to avoid this might be using with linespoints (link), but I want to draw it without revising the original data file.

Do we have simple and robust solution for this problem?

sample image


Solution

  • Assuming that you are plotting a function, that is, for each x value there exists one and only one corresponding y value, the easiest way to achieve what you want is to use the smooth unique option. This smoothing routine will make the data monotonic in x, then plot it. When several y values exist for the same x value, the average will be used.

    Example:

    Data file:

    0.5 0.5
    1.0 1.5
    1.5 0.5
    0.5 0.5
    

    Plotting without smoothing:

    set xrange [0:2]
    set yrange [0:2]
    plot "data" w l
    

    enter image description here

    With smoothing:

    plot "data" smooth unique
    

    enter image description here