如何在 gnuplot 标签中获取不同的偏移量

如何在 gnuplot 标签中获取不同的偏移量

我发现了一种非常奇怪的方法来绘制离散值的水平线,标签位于线的左侧或右侧

我构建了一个输入数据文件,其中:

  • 第一列中的值决定水平线的振幅
  • 重复第二列中的值来绘制水平线
  • 我将标签放在第 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

相关内容