强制绘制点间隔的第一个点

问题描述

我试图使用pointinterval命令绘制图形,但我希望绘制数据的第一个点,而对于第一个图的热端则不是这种情况。确实,我们看到了紫色虚线,但在左下角(y + = 0.35左右)没有任何点。

Hot side: the first points start at y+=1 and not at y+=0.35 as expected.

我的代码涉及for循环,并显示在下面:

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)

如果我用pointinterval 1作图,我们会发现这些点存在(请参见下图)。

enter image description here

如何强制使用pointinterval绘制第一个点?
是否可以每2点绘制一半的点,每2点绘制另一部分,但偏移1点?

解决方法

我认为您无法使用pointinterval属性来执行您想要的操作。进行设计时,对于每个绘制的图,初始点的偏移量将增加一个,目的是减少来自连续图的点符号重叠的机会。这与您尝试做的完全相反。

因此,我建议不要绘制每个数据集with linespoints pi N。而是使用with lines说明符中的过滤器,如下图绘制每个数据集两次,一次with points和一次using

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

过滤器(int($ 0)%N?NaN:$ 1)抑制行号不能被N整除的所有点。这实际上是pointinterval属性的工作,除了pointinterval跳过超出范围的点和其他无法绘制的点,而不是严格使用行号作为索引。

编辑如果由于x坐标不一致而需要单独的偏移值:

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