gnuplot 5 向后兼容性声明不正确,所以现在如何只绘制文件中的一些标签

gnuplot 5 backward compatibility claim is not true so how ploting now only some labels from file

我花了几个小时研究如何在 5.2 中实现 gnuplot 4.6 的旧行为

但是没机会了!所以我觉得有足够的灵感来问我的问题;-D

首先是 gnuplot backward compatibility claim!

数据:

1  3  hm
2  5  oh
3  0  nice
4  2  krr

第一个col是x,第二个是y,第三个是x的标签。

我喜欢在 x 轴上打印所有值而不是所有标签。

如何只打印每三个标签是我的问题。

只要我不打印xtic,一切都可以轻松搞定。

但是……问题开始了。

在 4.6 中,我通过

实现了这一点
file using 1:2 notitle ... 
'' using 1:((int(column(1))%3)==1?-1.:0/0):xtic(stringcolumn(3)) notitle

每当 x 值的其余部分为一时,在 yrange 之外绘制一个点,在我的例子中为 -1 并绘制 x 标签,否则产生无效值并且不绘制任何内容。

效果很好,而且很容易修改。期望你有数百分。随和。

现在如何在 GNUPLOT 5.2 中执行此操作???

如果存在有效的坐标对,它绘制任何标签值都没有关系?

很高兴找到解决方案。

Offtopic:我真的很喜欢 gnuplot 程序,即使您有时需要找到诀窍,它也是一个很棒的工具。但是向后的可移植性...... ups ;)

假设我正确理解了您的问题,即使用 xtic() 仅显示每 3 个 xtic,试试这个:

代码:

### only every 3rd xtic
reset session

$Data <<EOD
1   1.2  one
2   2.2  two
3   3.2  three
4   4.2  four
5   5.2  five
6   6.2  six
7   7.2  seven
8   8.2  eight
9   9.2  nine
EOD

plot $Data u 1:2 w p pt 7, \
     '' u 1:(NaN):xtic(int()%3==1?strcol(3):"") not
### end of code 

结果:

加法:

对于绘图命令,您也可以使用

plot $Data u 1:2 w p pt 7, \
     '' u 1:(NaN):xtic(3) every 3 not

然后它也将只显示每第 3 个 xtic 标签,但同时只显示每个第 3 个 xtic 标记。