Domanda

I have data for a CDF in a file which looks like the following:

0.033 0.0010718113612
0.034 0.0016077170418
0.038 0.0021436227224
...  ...
...  ...
0.847 0.999464094319
0.862 1.0

First column is the X-axis value and the second column is the CDF value on Y-axis. I set the line style as follows:

set style line 1 lc rgb 'blue' lt 1 lw 2 pt 7 ps 0.75   # --- blue

and subsequently plot the line with the following:

plot file1 using 1:2 title 'Test Line CDF' with linespoints ls 1

This all works fine, the problem seems to be that my CDF file is pretty big (about 250 rows) and Gnuplot would plot the marker/point (a circle in this case) for every data point. This results in a very "dense" line because of the over-concentration of markers such that the underlying line is almost not visible as I show in an example image below:

enter image description here

How can I selectively draw the markers so that instead of having them on all data points, I plot them after every 50 data points, without having to decrease the number of data points (which I believe is what "every n" in the plot command would do) in my data file or decrease the marker size?

È stato utile?

Soluzione

There is no need to use two plots commands, just use the pointinterval option:

plot 'data' pointinterval 5 with linespoints

That plots every line segment, but only every fifth point symbol.

The big advantage is, that you can control the behaviour with set style line:

set style line 1 lc rgb 'blue' lt 1 lw 2 pt 7 ps 0.75 pi 5
plot 'data' w lp ls 1

Altri suggerimenti

You can plot the same function twice, once with lines only, and then with points every n points. This will draw less points without decreasing the amount of segments. I think this is what you want to achieve. For this example I have done set table "data" ; plot sin(x) to generate numerical sampling of the sin(x) function.

What you have at the moment is:

plot "data" with linespoints pt 7

which gives

enter image description here

Now you can do the following:

plot "data" with lines, "data" every 10 with points pt 7 lc 1

which gives what you want:

enter image description here

You can change the styling to meet your needs.

Although @Miguel beat me to it, but I'm also posting my solution below:

The idea is to once draw the line and then draw the points with the "every n" specifier. I changed my own Gnuplot script in the following manner. A kind of hack but works:

set style line 1 lc rgb 'blue' lt 1 lw 2 pt 7 ps 0   # --- blue

plot file1 using 1:2 title '' with linespoints ls 1, "" using 1:2 every 20 title 'Test Line CDF' with points ls 1 ps 0.75

enter image description here

This retains the nice curve, without quantizing it too coarsely while also keeping the points much better spaced.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top