我正在某个数据集中绘制几条线。几个数据点(下例中的第 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
但这也没有用(没有明显的效果)。
下面是当前版本的示例(有几条绘图线,我尽量使代码示例简短)。 感谢任何帮助...
最佳答案
尝试用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”。
关于Gnuplot:具有交替偏移的数据点标签(高于/低于数据点),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37647266/