在MATLAB中绘制四个变量之间的关系

在MATLAB中绘制四个变量之间的关系,matlab,plot,Matlab,Plot,我正在努力做一些不应该太难的事情;我有三个变量(x,y,z)和一个结果(e),我知道它们之间的关系。因此,我们假设关系如下: e = x + y.^2 + (4/z) 现在,我要做的是在MATLAB中创建一个图,显示这个函数,三个变量在各自的轴上,颜色反映结果(e)。我知道它可能与meshgrid和surf有关,但从我的角度看,它们只能绘制三个变量,而不是四个变量,就像我的例子一样 提前感谢您的帮助,我试用了isonormals(),它给出了一个有用的绘图: 红色表面对应于e=0,而

我正在努力做一些不应该太难的事情;我有三个变量(x,y,z)和一个结果(e),我知道它们之间的关系。因此,我们假设关系如下:

e = x + y.^2 + (4/z)    
现在,我要做的是在MATLAB中创建一个图,显示这个函数,三个变量在各自的轴上,颜色反映结果(e)。我知道它可能与
meshgrid
surf
有关,但从我的角度看,它们只能绘制三个变量,而不是四个变量,就像我的例子一样


提前感谢您的帮助,

我试用了
isonormals()
,它给出了一个有用的绘图:

红色表面对应于
e=0
,而蓝色和绿色表面分别显示
e=5
e=-5

代码如下:

clear;

[x, y, z] = meshgrid(-30:0.5:30, -10:0.5:10, -1:0.01:1);

e = x + y.^2 + 4./z;

e1 = 0; e2 = 5; e3 = -5;
e_val = [0, 5, -5];
c_val = ['r', 'b', 'g'];

for i=1:length(e_val)
    p = patch(isosurface(x,y,z,e,e_val(i)),'FaceColor',c_val(i),'EdgeColor','none');
    isonormals(x,y,z,e,p); 

    hold on;
end
hold off;

xlabel('X');ylabel('Y');zlabel('Z');

view(3); axis tight;
camlight;
lighting gouraud;

让你看艾德·塔夫特写的任何一本书。在设计图表之前,确保你知道你想告诉观测者什么故事。@Carl给出了很好的建议。Martijn,思考:绘图应该是什么样子的:你想要一个曲面、直线、单点吗?你确定观察者真的理解这样的情节并能解释它吗?或者更简单的情节更合适?您可以通过使用
meshgrid
创建
x,y,z
值来创建这样的绘图。
surf
函数(以及许多其他函数)有第四个参数
C
,即每个数据点的颜色。也就是说,您只需拨打
surf(x,y,z,e)
。谢谢您的回答!我认为可以简化绘图的一种方法是创建一个变量平面(x,y,z),该平面导致零误差(e)。最终,目标是获得该平面(满足任务的标准),然后将其与实际观测变量(x、y、z)叠加,并计算误差分数作为与函数的正交距离。我希望这可以简化我的问题。请看这里: