0

我在 gnuplot 中制作了一个 3d 曲面图,我想知道是否可以在 y、z 轴的“墙”上绘制一个不相关的 2d 折线图。所以本质上,我把我的 x,y 线图粘贴到 y,z 轴上。

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

4

1 回答 1

1

这可能不是您正在寻找的东西,但它是一种在 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 的函数,才能使绘图正确显示在墙上,否则您可能会得到一条直线。

于 2013-01-12T04:23:12.987 回答