在 gnuplot 中专门标记一个点

6 gnuplot

假设我想绘制一个图形并且我想在图形上显示一些重要的点。我如何在 gnuplot 中做到这一点?例如,在y = x 2的图中,我想显示 (2,4) 和 (4,16)。

KDN*_*KDN 11

我不认为上面的答案很有帮助,因为在我写这篇文章的时候,第一个谷歌结果方法非常不令人满意。

它使用 gnuplot 读取标准输出的能力来生成数据,以便

plot "< echo '1 2'"
Run Code Online (Sandbox Code Playgroud)

将在 x=1, y=2 点放置一个数据点。

这有几个缺点,使其几乎无法使用。

首先,将变量传递给这个方法并不是一个好方法,因为它已经使用了这两种类型的引号。因此,禁止使用宏在 sprintf 语句中传递变量,因为需要第三种类型的引用。

其次,它需要运行 plot 命令才能调用该点。这意味着如果我想要绘制多个点,我必须将 plot 语句附加到主 plot 语句中。如果我想以任何脚本方式执行此操作,而不仅仅是作为显式列表,我将不得不运行一个宏,正如我已经指出的那样,它不适用于此技术。

Gnuplot 确实有两种更适合生成单点的技术。

首先,如果您只需要一个标记点​​,您可以使用 gnuplot 对象类型在该点绘制一个圆,例如

set object circle at <x>,<y> size <r>
Run Code Online (Sandbox Code Playgroud)

其中<x><y>是点的坐标,<r>是要绘制的圆的大小。圆可以被着色、填充、透明等,就像任何 gnuplot 对象一样。

其次,如果您确实需要具有特定点样式的标记,则可以使用 gnuplot 的label命令。通过将标签文本设置为空并指定点类型,将在指定的坐标处绘制一个点,例如,

set label <i> "" at <x>,<y> point pointtype <n>
Run Code Online (Sandbox Code Playgroud)

设置一个带有标记索引<i>的点x=<x>,点y=<y>类型<n>(在默认的 wxt终端中,n=1 是红色十字,n=2 是绿色盐渍,n=3 是蓝色星号,等等...)

通过这种方式,可以设置多个要绘制的点,并且可以为另一个函数发出单独的绘图命令,而不必将所有要绘制的单个点弄乱绘图语句。