我发现了一种非常奇怪的方法来绘制离散值的水平线,标签位于线的左侧或右侧
我构建了一个输入数据文件,其中:
- 第一列中的值决定水平线的振幅
- 重复第二列中的值来绘制水平线
- 我将标签放在第 3 列和第 4 列,因为正如您将在下面看到的,这允许我决定将标签放在哪里,在行的左侧还是右侧
+---+-----------+--------+--------+ | 3 | -0.178110 | 130 | | | 4 | -0.178110 | | | | 5 | -0.178110 | | |
空行 | 3 | -0.185959 | 129 | | | 4 | -0.185959 | | | | 5 | -0.185959 | | |
空行 | 3 | -0.188473 | | | | 4 | -0.188473 | | | | 5 | -0.188473 | x | 128 |
空行 | 3 | -0.208311 | 127 | | | 4 | -0.208311 | | | | 5 | -0.208311 | | | +---+-----------+--------+--------+
然后我用
绘图“输入”u 1:($2*27.2114)wl 无标题,\
''每3 u 1:($2*27.2114):(x=3?$3:1/0)带标签字体“,8”偏移量-2,0 无标题,\
''u 1:($2*27.2114):(x=5?$4:1/0)带标签字体“,8”偏移量2,0 无标题
区分在左侧或内部绘制标签的位置。
我觉得这很奇怪,有什么建议可以更优雅地做到这一点?
提前致谢
洛伦佐
答案1
为什么不使用every
?这样无需修改数据文件即可完成此操作。下面是使用 gnuplot 动态生成的数据的示例:
plot [-1.5:1.5] "+" u (sin(10*$1)):1 ev 4 w p, "+" u (sin(10*$1)):1:1 ev 8 w labels offset 5,0, "+" u (sin(10*$1)):1:1 ev 8::4 w labels offset -5