我有一条通过gnuplot绘制的高斯曲线,我想要一条从x轴上升的线,正好停在它碰到曲线的地方,然后垂直于左边到达y轴,理想情况下显示值在两个轴,并在与 x 轴相交处显示一个符号。
在 gnuplot 中添加它的正确方法是什么?我尝试使用 nohead 来玩弄箭头,但我是 gnuplot 的新手,似乎找不到实现我需要的方法。
我有一条通过gnuplot绘制的高斯曲线,我想要一条从x轴上升的线,正好停在它碰到曲线的地方,然后垂直于左边到达y轴,理想情况下显示值在两个轴,并在与 x 轴相交处显示一个符号。
在 gnuplot 中添加它的正确方法是什么?我尝试使用 nohead 来玩弄箭头,但我是 gnuplot 的新手,似乎找不到实现我需要的方法。
我设法找到了一个简单的解决方案来满足我的需求。arrow
可以通过将 的坐标nohead
指定为绘图本身的函数来实际使用。y
to
假设我们有一个函数 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 下做一个标签,但上面的内容足以满足我的需要。希望它对寻找相同解决方案的其他人有所帮助。
我过去通过以下方式解决了这个问题:
知道曲线上您希望线条到达的点的对 (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。
希望这可以帮助!