【问题标题】:Gnuplot - draw a vertical line from the x-axis to the plot, and from the plot to the y-axisGnuplot - 从 x 轴到绘图,从绘图到 y 轴绘制一条垂直线
【发布时间】:2013-05-24 21:11:01
【问题描述】:

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

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

【问题讨论】:

    标签: gnuplot


    【解决方案1】:

    我设法找到了一个简单的解决方案来满足我的需求。通过将toy 坐标指定为绘图本身的函数,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 添加标签。第一个值是标签。
    【解决方案2】:

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

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

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

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

    希望这会有所帮助!

    【讨论】: