我在gnuplot中制作了一个三维表面图,我想知道是否可以在y,z轴的“墙”上绘制一个不相关的二维线图。 所以从本质上讲,我采用我的x,y线图,但将其粘贴到y,z轴上。
类似于x,y,在3d表面下的等高线图,但不同。
答案 0 :(得分:1)
这可能不是您正在寻找的,但它是一种在您的绘图框的“墙”上绘制函数的方法:
#!/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的函数,以便绘图正确显示在墙上,否则您可能会得到一条直线。