11

我有一条通过gnuplot绘制的高斯曲线,我想要一条从x轴上升的线,正好停在它碰到曲线的地方,然后垂直于左边到达y轴,理想情况下显示值在两个轴,并在与 x 轴相交处显示一个符号。

在 gnuplot 中添加它的正确方法是什么?我尝试使用 nohead 来玩弄箭头,但我是 gnuplot 的新手,似乎找不到实现我需要的方法。

4

2 回答 2

18

我设法找到了一个简单的解决方案来满足我的需求。arrow可以通过将 的坐标nohead指定为绘图本身的函数来实际使用。yto

假设我们有一个函数 f(x),我们想画一条从 x=3 到 f(3) 的线以及对应的水平线 y= f(3),我们所要做的就是添加 2 个箭头:

set arrow from 3,0 to 3,f(3) nohead
set arrow from 0,f(3) to 3,f(3) nohead

由于我还希望在线与轴相交的位置添加抽动,如果它们丢失,则可以这样做:

set xtics add (3 3)
set ytics (f(3) f(3))

由于轴上可能涉及小数位,因此y可能还需要执行以下操作(在这种情况下,它有 3 个小数位):

set format y "%1.3f"

我没有找到一种方法在 x 轴上的 tic 下做一个标签,但上面的内容足以满足我的需要。希望它对寻找相同解决方案的其他人有所帮助。

于 2013-05-26T00:45:08.340 回答
1

我过去通过以下方式解决了这个问题:

知道曲线上您希望线条到达的点的对 (x,y),请执行以下操作: - 计算一组值 (x,{0..y}),然后绘制它。这将是垂直线 - - 计算一组值 ({0..x},y),并绘制它。这将是水平线

或者,您可以创建虚拟数组 a (x,{whole y range}) 和 ({whole x range},y),并通过指定 (x,y) 将它们从原点绘制到点 (x,y)范围设置中的点。

可能这些不是最有效的方法,但都对我有用。我使用 Perl 脚本在 Perl 数据语言 (PDL) 中进行了这些操作,我从中编写了一个 gnuplot 配置文件并使用“系统”调用 gnuplot。

希望这可以帮助!

于 2013-05-25T09:27:10.850 回答