问题描述
我试图使用pointinterval命令绘制图形,但我希望绘制数据的第一个点,而对于第一个图的热端则不是这种情况。确实,我们看到了紫色虚线,但在左下角(y + = 0.35左右)没有任何点。
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作图,我们会发现这些点存在(请参见下图)。
如何强制使用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