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
相关产品推荐
相关产品推荐

