在gnuplot中绘制函数向量时,如何自定义向量的起点位置?
在Gnuplot中为向量指定起点的可靠方案
问题分析
你尝试用参数模式绘制向量时,默认写法会让向量从原点出发:
set size square set parametric plot [0:2*pi] sin(t), cos(t) with vectors
直接追加函数的方式会生成两条独立曲线,无法实现向量起点随参数定位的需求;伪输入文件+的方案不仅逻辑割裂,还需要手动调整参数范围,维护成本高。
正确解决方案
在参数模式下,with vectors需要四个参数,依次对应:向量起点的x坐标、起点的y坐标、向量的x分量、向量的y分量。你只需把这四个函数按顺序写在plot命令中即可,无需额外伪文件。
以“向量起点在圆轮缘,向量为该点切线方向”的需求为例,正确代码如下:
set size square set parametric # 四个参数:起点x=sin(t), 起点y=cos(t), 向量x分量=cos(t), 向量y分量=-sin(t) plot [0:2*pi] sin(t), cos(t), cos(t), -sin(t) with vectors head filled
head filled为可选设置,用于添加实心箭头,提升可视化效果。- 针对复杂函数,只需替换对应的四个函数:
x0(t)(起点x)、y0(t)(起点y)、dx(t)(向量x分量)、dy(t)(向量y分量),参数范围直接通过[t_min:t_max]指定,无需调整与图片尺寸相关的转换系数。
逻辑说明
参数模式下,gnuplot会为每个t值计算四个函数的值,将前两个作为向量起点,后两个作为向量偏移量,生成从指定起点出发的向量,完全符合函数式绘图逻辑,避免了伪文件方案的维护问题。
内容的提问来源于stack exchange,提问作者Ignat Insarov
相关产品推荐
相关产品推荐

