Martin7
Martin7

Reputation: 105

Force 1st point of pointinterval to be plotted

I tried to plot graph using the pointinterval command and I would like the 1st point of my data to be plotted which is not the case for the hot side of my first plot. Indeed we see the purple dashed line but no point at the bottom left corner (around y+=0.35). Hot side: the first points start at y+=1 and not at y+=0.35 as expected.

My code involves for loop and is displayed below:

plot for [i=1:words(FILES)] myDataFile(i) u (column(1)):(column(6)/word(UTAUS_ch,i)) w lp pointinterval 2 pt myPointtype(i) ps myPointsize(i) dt myDashtype(i) lt myLinetype(i) lw myLinewidth(i) lc rgb myLinecolor(i) title myTitle(i)

If I plot with pointinterval 1 we see that those points exist (see picture below). enter image description here

How can I force the first point to be plotted with pointinterval?
Is that possible to plot half of my points every 2 points and the other part every 2 points but with an offset of 1 point?

Upvotes: 1

Views: 148

Answers (1)

Ethan
Ethan

Reputation: 15093

I do not think you will be able to do what you want using the pointinterval property. It is designed so that the offset of the initial point increases by one for each plot drawn, with the intention of reducing the chance that point symbols from successive plots will overlap. This is exactly opposite to what you are trying to do.

Therefore I suggest not plotting each dataset with linespoints pi N. Instead plot each dataset twice, once with lines and once with points using a filter in the using specifier like this:

 plot FOO using 1:2 with lines, '' using ((int($0)%N) ? NaN : $1) : 2 with points

The filter (int($0)%N ? NaN : $1) suppresses all points whose line number is not evenly divisible by N. This is essentially what the pointinterval property does, except that pointinterval skips out-of-range points and otherwise unplottable points rather than strictly using the line number as an index.

Edit If individual offset values are required because x-coordinates are not consistent:

array offset[N] = [1,1,2,-1, and so on]
plot for [i=1:N] \
    MyDataFile(i) using 1:2 with lines, \
    '' using (((int($0)+offset[i] % N) ? NaN : $1) : 2 with points

Upvotes: 1

Related Questions