我在 gnuplot 中制作了一个 3d 曲面图,我想知道是否可以在 y、z 轴的“墙”上绘制一个不相关的 2d 折线图。所以本质上,我把我的 x,y 线图粘贴到 y,z 轴上。
类似于 x,y 上的等高线图,在 3d 表面下,但不同。
我在 gnuplot 中制作了一个 3d 曲面图,我想知道是否可以在 y、z 轴的“墙”上绘制一个不相关的 2d 折线图。所以本质上,我把我的 x,y 线图粘贴到 y,z 轴上。
类似于 x,y 上的等高线图,在 3d 表面下,但不同。
这可能不是您正在寻找的东西,但它是一种在 splot 框的“墙上”绘制函数的方法:
#!/usr/bin/env gnuplot
set term png
set output 'test.png'
# this is the function you want on the wall
myfun(x,y) = y**2
# set the ranges manually
xmin = -10
xmax = 10
ymin = -10
ymax = 10
x_range = xmax - xmin
y_range = ymax - ymin
scaler = 0.001
x1 = xmin - x_range*scaler
x2 = xmin + x_range*scaler
x3 = xmax - x_range*scaler
x4 = xmax + x_range*scaler
y1 = ymin - y_range*scaler
y2 = ymin + y_range*scaler
y3 = ymax - y_range*scaler
y4 = ymax + y_range*scaler
xminwall(x,y) = (x > x1 && x < x2) ? myfun(x,y) : 1/0
xmaxwall(x,y) = (x > x3 && x < x4) ? myfun(x,y) : 1/0
yminwall(x,y) = (y > x1 && y < x2) ? myfun(x,y) : 1/0
ymaxwall(x,y) = (y > x3 && y < x4) ? myfun(x,y) : 1/0
splot sin(x), xminwall(x,y)
结果如下:
该脚本所做的是绘制您想要在墙上绘制的函数 (myfun(x,y)) 并对其进行绘制,仅限于非常靠近墙壁的值。表面网格具有一定数量的网格点,其中一个点始终位于 x 和 y 范围内。
在这个例子中,如果我刚刚完成splot sin(x), y**2
,我会得到两个重叠的表面。
我制作了四个函数(xminwall
等),因此您可以在 x/y 范围的最小/最大墙壁上绘制墙壁。请注意,mufun(x,y)
它必须是正确 x 和 y 的函数,才能使绘图正确显示在墙上,否则您可能会得到一条直线。