在 gnuplot 中具体标记一个点

在 gnuplot 中具体标记一个点

假设我想绘制一个图表,并想在图表上显示一些要点。如何在 gnuplot 中执行此操作?例如,在以下图表中y= x2,我想显示(2,4)和(4,16)。

答案1

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

它利用 gnuplot 读取 stdout 的能力来生成数据,这样

plot "< echo '1 2'"

将会把单个数据点放置在点 x=1, y=2 处。

它有几个缺点,使得它几乎无法使用。

首先,没有一种好的方法将变量传递到此方法中,因为它已经使用了两种类型的引号。因此,使用宏在 sprintf 语句中传递变量被禁用,因为需要第三种类型的引号。

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

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

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

set object circle at <x>,<y> size <r>

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

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

set label <i> "" at <x>,<y> point pointtype <n>

<i>在点处设置一个带有标签索引的点x=<x>y=<y>点类型为<n>(在默认的 wxt 终端中,n=1 为红色十字,n=2 为绿色圣安德鲁十字,n=3 为蓝色星号,等等...)

通过这种方式,可以设置要绘制的多个点,并且可以为另一个功能发出单独的绘制命令,而不必使绘制语句与所有要绘制的单个点混杂在一起。

答案2

首先,您需要定义要绘制的函数f()(例如,使用指数符号)**。绘制两个图形,一个用于绘制函数,另一个用于绘制重要点。然后输入点的数据4 162 4。您可以使用终止e

f(x) = x ** 2
plot f(x), '-' with points
4 16
2 4
e

现在您可以根据需要自定义渲染。

相关内容