gnuplot:3d表面,y轴,z轴墙上有2d线图

时间:2013-01-11 23:25:53

标签: gnuplot

我在gnuplot中制作了一个三维表面图,我想知道是否可以在y,z轴的“墙”上绘制一个不相关的二维线图。 所以从本质上讲,我采用我的x,y线图,但将其粘贴到y,z轴上。

类似于x,y,在3d表面下的等高线图,但不同。

1 个答案:

答案 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)

结果如下:

enter image description here

脚本的作用是绘制您想要在墙上绘制的函数(myfun(x,y))并绘制它的斑点,限制为非常接近墙的值。表面网格具有一定数量的网格点,其中一个点始终处于x和y限制。

在这个例子中,如果我刚刚完成splot sin(x), y**2,我会得到两个重叠的表面。

我制作了四个函数(xminwall等),因此您可以在x / y范围的最小/最大墙上绘制墙。请注意,mufun(x,y)必须是正确的x和y的函数,以便绘图正确显示在墙上,否则您可能会得到一条直线。