Gnuplot 线条上的箭头
我具有电场线的功能:Gnuplot 线条上的箭头,gnuplot,Gnuplot,我具有电场线的功能: set isosamples 55, 55 set contour base set cntrparam levels incremental -1.6,0.2,1.6 unset surface splot [-4:4] [-2.2:2.2] (y*(1+1/(x**2 + y**2))) 如何在该曲线上放置箭头,sey位于x=2的位置? 实现这一目标的一种方法如下: set isosamples 200, 200 set contour base unset su
set isosamples 55, 55
set contour base
set cntrparam levels incremental -1.6,0.2,1.6
unset surface
splot [-4:4] [-2.2:2.2] (y*(1+1/(x**2 + y**2)))
如何在该曲线上放置箭头,sey位于x=2的位置?
实现这一目标的一种方法如下:
set isosamples 200, 200
set contour base
unset surface
set cntrparam levels incremental -2,0.2,2
set xr [-4:4]
set yr [-3:3]
x_ref = 2
f(x,y) = (y*(1+1/(x**2 + y**2)))
g(x,y) = 2*x*y / ( (x*x + y*y)**2 + (x*x + y*y) - 2*y*y )
set table 'meta.levels.dat'
splot f(x, y)
set table 'meta.pnts.dat'
splot f(x_ref, y)
unset key
unset table
set terminal pngcairo enhanced size 600, 400
set output 'fig.png'
set style arrow 1 head filled size screen 0.01,30 fixed lc rgb 'dark-red'
set size ratio -1
delta = 0.01
plot \
'meta.levels.dat' w l lc rgb 'black', \
'meta.pnts.dat' every 1:1:0:0:0:0 u (x_ref-delta):($2-g(x_ref,$2)*delta):(delta):(g(x_ref,$2)*delta) with vectors as 1
策略是:
f(x,y)
,在上面的脚本中),并通过set table
x
(例如x\u ref=2
),生成f(x\u ref,y)
的轮廓。由于此功能不依赖于x
,因此生成的轮廓将只是与x-
轴平行的直线,因此为了绘制与f(x,y)
轮廓的交点,可以只取每个块(每个轮廓)的第一个点并用x
-坐标设置为x\u ref
进行绘图g(x,y)
)和向量
样式来绘制箭头。上面,delta
参数指定了x
方向上的小位移-这是为了确保只有箭头的头部可见