4

我有一个要在 matlab 中绘制的 3 维数据。数据集是通过沿 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,除了我不希望高度(即垂直线)出现在边缘上。我不知道是否有任何其他方法可以将数据绘制为瀑布状曲线但没有那些垂直线。谢谢

如何消除下图中圈出的垂直线

4

2 回答 2

2

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

例如

[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,:)是针对底部。

于 2012-05-07T17:47:55.543 回答
1

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

figure;
[X,Y,Z] = peaks(10);
handle_figure = waterfall( X, Y, Z );
set( handle_figure, 'FaceColor', 'none' );
于 2013-12-13T21:51:45.987 回答