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

3

我正在绘制某个数据集中的几条线。其中有几个数据点(在下面示例中的第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

但是这也没有起作用(没有可见的效果)。

下面是一个例子,展示当前版本的样子(有几条更多的绘制线,我尝试保持代码简洁)。非常感谢任何帮助...

输入图像描述

1个回答

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'。


谢谢Tom,你的回答有所帮助,标签现在在上方和下方。但是它们在x轴上有些偏移,就像这张图片中看到的一样(http://www.bilderload.com/bild/386652/daxlight04A11.png)。另外,是否可以稍微随机化偏移量?因为在我的数据中,可能会有三个或更多这些数据点靠得很近...还有感谢你提供的“快捷方式”的提示 :) - werwurm
刚刚注意到...上传的图片使用了偏移量23,-2,因为我在尝试你的建议时进行了调整。如果使用偏移量1,-2,则标签会向左侧进一步移动。 - werwurm
附加评论:也许这是由于数据文件的结构?第13列中并非每一行都有数据。数据样本:2016-04-04;9789.77;9907.05;9732.82;9822.08;9893.85;9655.64;10045.40;9250.40;9779.70;;; 2016-04-05;9647.81;9661.30;9553.17;9563.36;9832.69;9722.31;9975.32;9316.25;9779.70;Kijun Cross;neutral\nSHORT;9722.309570 2016-04-06;9582.46;9635.91;9505.90;9624.51;9809.05;9722.31;9862.12;9316.25;9779.70;;; 2016-04-07;9648.55;9702.18;9484.75;9530.62;9791.22;9791.64;9952.90;9327.75;9779.70;Tenkan/Kijun Cross;weak\nSHORT;9791.219727(希望这可读...) - werwurm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接