2012-05-07 13 views
4

我有一個三維數據繪製在matlab中。該數據集是通過層疊10條指數曲線沿y方向如尋找在matlab中的瀑布圖的變化

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) 

我試圖與瀑布繪製ž除了我不想高度不同的參數建(即垂直線)出現在邊緣。我不知道是否有其他方式將數據繪製爲瀑布狀曲線,但沒有這些垂直線。感謝

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

+0

你試過plot3? – Rasman

+0

使用plot3的問題是1)它用線條而不是帶有曲面的貼圖2)plot3(x,y,z)在x和y之間需要相同的維度,但在我的情況下,它們是不一樣的。 – user1285419

回答

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

+1

謝謝拉斯曼。它效果很好。只是有點好奇,是否有任何方式使該地區零透明?不管怎麼說,還是要謝謝你。 – user1285419

+1

您可以將FaceAlpha更改爲小於1的值('set(h,'FaceAlpha',0.3)'),但它會花費您全部邊界顏色方案。我確信有另一種方式來彌補這一點,我只是沒有想出它 – Rasman

+0

非常感謝你:) – user1285419

1

我知道這是一個古老的職位,但低於會使曲線透明下的區域:

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