如何消除Gnuplot中两个filledcurves填充曲线间的空白间隙?
解决Gnuplot中filledcurves填充曲线间隙问题
问题原因
你通过条件函数定义N1(x)和N2(x)时,在x=±1.96位置,其中一个函数会返回1/0(无效数据),导致Gnuplot在该点无法生成数据点,填充曲线只能终止到边界前的最后一个采样点,最终产生间隙。
解决方案
放弃条件函数,直接通过指定plot命令的x范围分割填充区域,这样两个填充块会在边界处完美衔接。修改后的完整脚本如下:
set title "Quantile" set yrange[0:1.1] set xlabel("x") N(x) = 1/(sqrt(2*pi))*(exp(-x**2/2)) set output "Quantile.png" # 按x范围分割填充区域,消除间隙 plot [-inf:-1.96] N(x) with filledcurves y1=0 lc "cyan", \ [-1.96:1.96] N(x) with filledcurves y1=0, \ N(x) with lines title "Normal Distribution" lw 2.5 pause -1
补充说明
如果坚持使用条件函数的方式,可微调边界条件让两个函数在x=±1.96处都有定义(例如将N1(x)的条件改为x < -1.96 || x >= 1.96,N2(x)改为x >= -1.96 && x <= 1.96),同时添加set samples 1000提高采样精度,但这种方式不如直接指定x范围稳定可靠。
内容的提问来源于stack exchange,提问作者Sumit Gupta
相关产品推荐
相关产品推荐

