【问题标题】:Restricting the domain of a function plotted on Gnuplot限制在 Gnuplot 上绘制的函数的域
【发布时间】:2013-01-11 02:09:14
【问题描述】:

我正在 Gnuplot 上绘制一组数据,并希望将函数 x^2 叠加在同一个绘图上。我可以这样做:

plot "filename" using 1:2, x**2

这会产生一个图,其中函数x^2 延伸到图的整个域。我想让函数只显示在图形的一小部分上,比如从 x=1 到 x=2,而图形的大小由 filename 规定为从 x=0 到x=10。我知道我可以自己绘制函数:

plot [1:2] x**2

但是,鉴于我凭直觉尝试的方法不起作用,我该如何将叠加保持在一起:

plot "filename" using 1:2, [1:2] x**2

invalid expression

要让它发挥作用,文档似乎很难解释。

【问题讨论】:

    标签: gnuplot


    【解决方案1】:

    最简单的方法可能是使用三元运算符?定义分段函数:

    f(x) = (x > 1 && x < 2) ? x**2 : 1/0
    plot "filename" using 1:2, f(x)
    

    另一种方法是使用replot 命令:

    plot "filename" using 1:2
    replot [1:2] x**2
    

    【讨论】:

    • 但是这个分段函数显示了一个不连续的情节!你知道怎么去掉吗?感谢您发布的答案。
    • 我不确定你所说的情节不连续是什么意思。当我绘制 f(x) 时,我得到 x^2 从 1 到 2,按顺序。你能澄清一下这个问题吗?
    • @andyas 感谢您的快速回复!我的意思是从 0 跳转到下一个值,因为这个函数不是分段连续的。干杯
    • 您的意思是从 1 跳转到绘制的第一个点(略高于 1)吗?这是因为函数 f(x) 仅在离散点进行采样。这些点的数量由set sample 命令确定——这可能会有所帮助。
    • 非常感谢您的帮助 :) 干杯
    【解决方案2】:

    我知道这是一个老问题,但对于任何可能正在寻找更简单方法的人来说:

    你的第一个想法

    plot "filename" using 1:2, [1:2] x**2
    

    现在可以使用了。

    【讨论】:

    • 在 5.2 中,[1:2] x**2 只是设置绘图的初始缩放,它不限制域。以后的版本有什么不同吗?
    猜你喜欢
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多