在matlab中寻找瀑布图的变体

时间:2012-05-07 00:48:31

标签: matlab 3d plot

我有一个三维数据要在matlab中绘制。通过沿y方向堆叠10条具有不同参数的指数曲线来构建数据集,例如

  x = 0:0.01:15;
  x0 = 0.5;
  y = [beta1, beta2, beta3, beta4, beta5, beta6, beta7, beta8, beta9, beta10];
  Z(1, :) = A*exp(-(x-x0).^2/beta1);
  Z(2, :) = A*exp(-(x-x0).^2/beta2);
  Z(3, :) = A*exp(-(x-x0).^2/beta3);
  Z(4, :) = A*exp(-(x-x0).^2/beta4);
  ...
  Z(10, :) = A*exp(-(x-x0).^2/beta10);
  % here A could be change based on beta too (no code shown here)

我试图用瀑布绘制Z,除了我不希望高度(即垂直线)出现在边缘。我不知道是否有任何其他方法可以将数据绘制为类似瀑布的曲线,但没有那些垂直线。感谢

how to get rid the vertical lines as circled in the following figures

2 个答案:

答案 0 :(得分:2)

“用线条绘制而不是用曲面贴片” 换句话说,您希望边界线不可见。嗯,这不是一件轻而易举的事,因为边界线与您可以直接包含的任何配色方案是分开的。您需要做的是在绘制数据后获取数据,然后相应地修改它:

e.g。

[X,Y,Z] = peaks(30);
h = waterfall (X,Y,Z);
CD = get (h, 'CData');
CD(1,:) = nan;
CD(end-2:end,:) = nan;
set (h, 'CData', CD)

请注意CD(1,:)用于“上升”边界,而CD(end-2:end-1,:)用于下降边界,CD(end,:)用于底部。

答案 1 :(得分:1)

我知道这是一个旧帖子,但下面的内容将使曲线下的区域变得透明:

figure;
[X,Y,Z] = peaks(10);
handle_figure = waterfall( X, Y, Z );
set( handle_figure, 'FaceColor', 'none' );