【发布时间】:2013-05-24 21:11:01
【问题描述】:
我有一条通过 gnuplot 绘制的高斯曲线,我希望有一条从 x 轴上升的线,在它碰到曲线的地方停止,并垂直于左侧到达 y 轴,理想情况下显示两个轴上的值,并在与 x 轴相交处显示一个符号。
在 gnuplot 中添加它的正确方法是什么?我尝试使用 nohead 来玩弄箭头,但我是 gnuplot 的新手,似乎找不到实现我需要的方法。
【问题讨论】:
标签: gnuplot
我有一条通过 gnuplot 绘制的高斯曲线,我希望有一条从 x 轴上升的线,在它碰到曲线的地方停止,并垂直于左侧到达 y 轴,理想情况下显示两个轴上的值,并在与 x 轴相交处显示一个符号。
在 gnuplot 中添加它的正确方法是什么?我尝试使用 nohead 来玩弄箭头,但我是 gnuplot 的新手,似乎找不到实现我需要的方法。
【问题讨论】:
标签: gnuplot
我设法找到了一个简单的解决方案来满足我的需求。通过将to 的y 坐标指定为绘图本身的函数,arrow 实际上可以与nohead 一起使用。
假设我们有一个函数 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 下做一个标签,但上面的内容足以满足我的需要。希望它对寻找相同解决方案的其他人有所帮助。
【讨论】:
set xtics add ("$x_1$" 3) 代替 set xtics add (3 3) 为 tic 添加标签。第一个值是标签。
我过去通过以下方式解决了这个问题:
知道曲线上您希望线条到达的点的对 (x,y),请执行以下操作: - 计算一组值 (x,{0..y}),并绘制它。这将是垂直线 - - 计算一组值 ({0..x},y),并绘制它。这将是水平线
或者,您可以创建虚拟数组 a (x,{whole y range}) 和 ({whole x range},y),并通过指定 (x ,y) 范围设置中的点。
可能这些不是最有效的方法,但都对我有用。我使用 Perl 脚本在 Perl 数据语言 (PDL) 中进行了这些操作,我从中编写了一个 gnuplot 配置文件并使用“系统”调用 gnuplot。
希望这会有所帮助!
【讨论】: