Gnuplot:具有交替偏移的数据点标签(数据点上方/下方)

时间:2016-06-05 22:07:54

标签: gnuplot

我正在某个数据集中绘制几行。一些数据点(下例中的第13列)是特殊的,我希望它们用圆圈标记并标记(标签在第12列中)。

plot "data.csv" using 0:13 with circles lt 3 fs transparent solid 0.3 noborder notitle,\
"data.csv" using 0:13:(sprintf("(%d, %d)", $1, $12)) with labels nopoint offset char 1,-2 notitle,\
"data.csv" using 0:6 with lines lt 7 lw 2

我已经知道如何做到这一点。不幸的是,标签有时会重叠,这使得它们不可读。 如何使标签在数据点上方/下方交替显示?我试图定义一个在-1/1之间切换的函数,但是没有这样做。我还尝试通过添加

来使偏移量随机化
"data.csv" using 0:13:(sprintf("(%d, %d)", $1, $12)) with labels nopoint offset char 1,int(-5*(rand(0))) notitle

但这也行不通(没有明显效果)。

下面是当前版本的示例(有几个绘制的线条,我试图保持代码示例简短)。 感谢任何帮助...

enter image description here

1 个答案:

答案 0 :(得分:4)

尝试使用every将数据点分成两组:

plot "data.csv" using 0:13 with circles lt 3 fs transparent solid 0.3 noborder notitle,\
"data.csv" using 0:13:(sprintf("(%d, %d)", $1, $12)) every 2::0 with labels nopoint offset char 1,-2 notitle,\
"data.csv" using 0:13:(sprintf("(%d, %d)", $1, $12)) every 2::1 with labels nopoint offset char 1,2 notitle,\
"data.csv" using 0:6 with lines lt 7 lw 2

然后每个奇数数据点都有一个正偏移;每个偶数数据点都具有负偏移(或奇数& - >偶数;-))

注意:如果在逗号分隔的绘图语句中重复使用相同的源(文件),则可以使用''而不是重复'data.csv'。