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

gnuplot绘制不等式:函数线样式与填充效果控制问题

gnuplot双函数单侧填充与线条样式控制方案

直接修改你的代码,解决填充效果与线条样式控制问题,核心是利用gnuplot的自定义线条样式和精准填充选项实现需求:

reset session
# 网格样式设置
set grid ls 100 lc black lw 1
set grid x,y back

# 填充样式:透明实心(透明度0.2可调整)
set style fill transparent solid 0.2

# 坐标轴样式
set xzeroaxis lt 3 lw 2.5 lc black
set yzeroaxis lt 3 lw 2.5 lc black

# 坐标范围
set xrange [-10:10]
set yrange [-10:10]

# 定义目标函数
f(x) = -2*x + 7
g(x) = 0.6*x - 2

# 自定义线条样式:可直接复用
set style line 1 lt 1 lc "black" lw 2       # 黑色实线,线宽2
set style line 2 lt 2 lc "#FF6347" lw 2     # 橙色虚线(lt2为默认虚线,可换dt自定义虚线类型)

# 绘图逻辑:先填充区域,再画函数线条(确保线条在填充层上方)
plot \
     # 填充f(x)上方区域(到y轴上限)
     f(x) w filledcurves above lc "green", \
     # 填充g(x)下方区域(到y轴下限)
     g(x) w filledcurves below lc "yellow", \
     # 绘制f(x)线条,使用自定义样式1
     f(x) w ls 1, \
     # 绘制g(x)线条,使用自定义样式2
     g(x) w ls 2

关键调整说明

  • 线条样式控制:
    • 用set style line预定义样式,通过lt指定线型(1=实线,2=虚线,也可用dt "-.-"自定义虚线图案);
    • lc支持颜色名称(如"black")、十六进制色值(如"#FF6347");
    • lw设置线宽,按需调整数值。
  • 填充效果优化:
    • 使用filledcurves above/below直接填充函数上方/下方的全局区域,无需额外绘制白色填充覆盖,逻辑更简洁;
    • 若需填充函数与x轴之间的区域,替换为filledcurves x1(填充到y=0);
    • 填充透明度通过set style fill transparent solid 0.2的数值调整(0=完全透明,1=不透明)。
  • 绘图顺序:先绘制填充区域,再绘制函数线条,避免线条被填充层遮挡。

扩展场景:局部区域填充

如果需要仅在特定x范围内填充,可添加条件判断:

# 定义填充范围:x在-5到5之间才填充
fill_condition(x) = (x > -5 && x < 5) ? 1 : 0

plot \
     f(x) w filledcurves above lt fill_condition(x) lc "green", \
     g(x) w filledcurves below lt fill_condition(x) lc "yellow", \
     f(x) w ls 1, \
     g(x) w ls 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:25:17