You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

gnuplot大xrange下绘图显示不全,如何查看小xrange区域内容?

如何在gnuplot中聚焦函数图像的极小x范围区域?

问题描述

我需要绘制如下函数,使用的gnuplot代码如下:

reset
set terminal svg enhanced fname 'Times-Roman' fsize '10'
set output "test.svg"
A = 0.166735265541426
E = 27.3
F = 0.0244
f(x) = (0 < x && x < 2) ? T+((A/(E*sqrt(F*x)))*exp(-0.00003025/(x*F))) : 1/0
set xrange [-0.1:0.5]
plot f(x) t 'lit' ls 1 lw 2 lt rgb "green"

执行绘图后结果显示不全,而我只对**更小x范围([-0.005:0.01])**内可见的图像部分感兴趣,请问该如何调整?


解决方案

针对你的需求,我整理了几个关键调整点:

  1. 直接修改xrange到目标区间
    这是最直接的方式,把原代码中的set xrange [-0.1:0.5]替换为set xrange [-0.005:0.01],这样gnuplot会只渲染你关注的这个极小区间内的图像。

  2. 提高采样密度保证曲线精细度
    因为你关注的x范围非常小,默认的采样点数(通常是1000)可能不足以捕捉函数的细节,导致曲线看起来不连贯或者缺失部分细节。可以通过set samples命令增加采样数,比如设置为10000:

    set samples 10000
    
  3. 补充未定义的T变量
    你的函数定义中用到了变量T但没有给它赋值,这会导致绘图出错,记得根据你的实际需求给T设置一个值,比如T = 0。

  4. 完整的调整后代码
    把以上几点整合后,代码如下:

    reset
    set terminal svg enhanced fname 'Times-Roman' fsize '10'
    set output "test.svg"
    A = 0.166735265541426
    E = 27.3
    F = 0.0244
    T = 0  # 补充定义T变量
    f(x) = (0 < x && x < 2) ? T+((A/(E*sqrt(F*x)))*exp(-0.00003025/(x*F))) : 1/0
    set xrange [-0.005:0.01]
    set samples 10000  # 提升采样密度
    plot f(x) t 'lit' ls 1 lw 2 lt rgb "green"
    

执行这段代码后,就能得到你关注的极小x范围内的清晰图像了。


内容的提问来源于stack exchange,提问作者user9506868

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:20:42