【问题标题】:Present the function values varies with three arguments with one figure [duplicate]呈现函数值随三个参数变化,一个数字[重复]
【发布时间】:2019-03-29 00:54:04
【问题描述】:

我想通过一个图来阐明函数和它的三个参数之间的关系,比如y=f(a,b,c),其中y随着三个参数a,b,c的变化而变化。

但这似乎是不可能的。这个问题有什么好的解决办法吗?或者其他合理的方法可以很好地可视化关系?

我想知道我是否可以绘制一个具有三个轴a,b,c的3-D图形,并使用颜色深度来表示函数值。这能实现吗?

【问题讨论】:

  • 您是在问如何绘制包含 3 个变量的函数?喜欢this
  • 欢迎来到 StackOverflow。一个最小的example、您的示例代码以及您具体想要的内容的描述将为您提供更多帮助。见how to ask
  • 你看过these approaches的完整代码吗?例如,使用带有不同标记类型或颜色的 scatter3 可以让您可视化 4-5 个变量,具体取决于您的特定应用程序。
  • @SecretAgentMan 谢谢。确实,这些方法可能行不通,因为我需要的可以看作是一个 4-D 图形。
  • @gnovice。谢谢你。是的,它可以是 4-D 图形。似乎很有帮助。再次感谢!

标签: matlab 3d data-visualization matlab-figure


【解决方案1】:

这是使用scatter3 绘制多个变量的示例。更改标记类型会增加更多功能。请注意,我们仍然没有使用scatter3(X,Y,Z,S,C) 中的S(标记大小)参数。

但是,对于某些应用程序来说,这可能不是一个很好的可视化。下面列出了一些其他资源。

% MATLAB R2017a
n = 50;
X = 10*rand(n,1);
Y = 15*rand(n,1);
Z = 20*rand(n,1);
V = 100*rand(n,1); 

idxA = X + Y > 15;
idxB = ~idxA;

colormap(cmap), hold on, box on
p(1) = scatter3(X(idxA),Y(idxA),Z(idxA),[],V(idxA),'filled');
p(2) = scatter3(X(idxB),Y(idxB),Z(idxB),[],V(idxB),'filled');
p(2).Marker = 'd';
cb = colorbar;
view([-5 -2 -2])

p(1).MarkerEdgeColor = 'k';
p(2).MarkerEdgeColor = 'k';
xlabel('X')
ylabel('Y')
zlabel('Z')
cb.Label.String = 'V';  

其他资源:
这个post 带有 3D 和 4D 解决方案。未来的访问者可能会发现这个post 也很有价值,因为它有许多包含代码的示例。

MATLAB 参考资料:
MATLAB Plot Types
MATLAB Plot Gallery

【讨论】:

  • 谢谢!我们可以用线来连接这些散点吗?
  • 既然是 3D,你的意思是 surfacesurf
  • 是的。由于它们是离散的,因此很难获得变化的趋势。
  • 你看过'ribbon''plot3'(“LineSpec”属性设置为'-')吗?
  • 我不明白为什么您不能将点标记绘制在其他图的顶部。所以,是的,如果这是问题,我认为这是可能的。
猜你喜欢
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-29
  • 2020-05-03
  • 2014-12-18
  • 1970-01-01
相关资源
最近更新 更多