我正在某个数据集中绘制几行。一些数据点(下例中的第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
但这也行不通(没有明显效果)。
下面是当前版本的示例(有几个绘制的线条,我试图保持代码示例简短)。 感谢任何帮助...
答案 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'。