如何用gnuplot绘制带端点空心圆的Heaviside函数及相关图像?
如何用gnuplot绘制带空心圆标记的Heaviside函数及相关图像?
我来帮你搞定这个gnuplot绘图问题!你已经能画出基础的阶跃线,但要加上空心圆标记的核心思路是:分段绘制函数(避开阶跃点)+ 手动添加标记点。下面分步骤给你详细说明:
一、基础带空心圆的Heaviside函数(第一张图)
Heaviside函数的核心是x=0处的阶跃,我们需要在(0,0)和(0,1)位置添加空心圆,具体代码如下:
# 设置输出终端和文件 set terminal pngcairo enhanced font 'Arial,12' set output 'heaviside_basic.png' # 定义样式:pt6是gnuplot内置的空心圆符号 set style line 1 lc rgb '#0060ad' lw 2 # 蓝色粗线条 set style line 2 lc rgb '#0060ad' pt 6 ps 1.5 # 同色空心圆,大小1.5 # 坐标轴和范围设置 set xlabel 'x' set ylabel 'H(x)' set xrange [-3:3] # 调整x范围让图像更美观 set yrange [-0.1:1.1] # 留出上下边距避免标记被截断 set grid minor # 显示细网格提升可读性 # 分段绘制函数 + 添加空心圆标记 plot [-3:-0.001] 0 ls 1 title 'H(x)', \ # x从-3到接近0,y=0 [0.001:3] 1 ls 1 title '', \ # x从接近0到3,y=1 '-' with points ls 2 title '', \ # 绘制(0,0)的空心圆 '-' with points ls 2 title '' # 绘制(0,1)的空心圆 0 0 # 输入第一个标记点坐标 e # 结束当前数据块 0 1 # 输入第二个标记点坐标 e # 结束数据块
关键说明:
- 用
[-3:-0.001]和[0.001:3]限定绘图范围,避开x=0,防止两段线被自动连接成斜线 pt6是gnuplot内置的空心圆标记,替换成pt7/pt8可得到空心正方形/菱形
二、延迟的Heaviside函数(第二张图)
如果要绘制在x=a处阶跃的延迟版H(x - a),只需调整分段范围和标记点坐标即可,比如a=1的例子:
set terminal pngcairo enhanced font 'Arial,12' set output 'heaviside_delayed.png' set style line 1 lc rgb '#0060ad' lw 2 set style line 2 lc rgb '#0060ad' pt 6 ps 1.5 set xlabel 'x' set ylabel 'H(x - 1)' set xrange [-2:4] set yrange [-0.1:1.1] set grid minor plot [-2:0.999] 0 ls 1 title 'H(x-1)', \ [1.001:4] 1 ls 1 title '', \ '-' with points ls 2 title '', \ '-' with points ls 2 title '' 1 0 # 延迟后的左标记点 e 1 1 # 延迟后的右标记点 e
三、反向Heaviside函数(第三张图)
另一种常见变形是反向阶跃1 - H(x)(x<0时y=1,x>0时y=0),同样添加空心圆的代码如下:
set terminal pngcairo enhanced font 'Arial,12' set output 'heaviside_reversed.png' set style line 1 lc rgb '#0060ad' lw 2 set style line 2 lc rgb '#0060ad' pt 6 ps 1.5 set xlabel 'x' set ylabel '1 - H(x)' set xrange [-3:3] set yrange [-0.1:1.1] set grid minor plot [-3:-0.001] 1 ls 1 title '1 - H(x)', \ [0.001:3] 0 ls 1 title '', \ '-' with points ls 2 title '', \ '-' with points ls 2 title '' 0 1 # 左标记点 e 0 0 # 右标记点 e
额外小技巧
- 用
set key off可以关闭图例,让图像更简洁 - 如果需要矢量图输出,把
set terminal pngcairo改成set terminal pdfcairo或set terminal svg - 调整
ps参数可以改变空心圆的大小,比如ps 2会让标记更大
内容的提问来源于stack exchange,提问作者147pm
相关产品推荐
相关产品推荐

