Waterfall plot not showing correctly

9 次查看(过去 30 天)
I think this is an undesirable feature of the waterfall plot function and I'm posting it here so that others don't spend as long as I did trying to figure out why your plot doesn't look right.
Here is an example of a correcly rendered waterfall plot:
figure(1)
[X,Y] = meshgrid(-5:.5:5);
Z = Y.*sin(X) - X.*cos(Y);
p = waterfall(X,Y,Z)
If you happen to have nan values in your data the plot does not raise an error but the white 'area-fill' of each plot line dissappears.
figure(2)
Z(:,5) = nan;
p2 = waterfall(X,Y,Z)
I couldn't find any mention of this in the documentation, and when you don't know that nan values are the cause of this, it's very hard to diagnose. Especially if your data set is large or the nan values are in the first or last column and it's not so obvious to see that there is a gap in the data as it is in these simple examples.
  3 个评论
Bill Tubbs
Bill Tubbs 2021-6-18
编辑:Bill Tubbs 2021-6-18
My issue is not that it hasn't replaced the nan values with something. It's that it has turned off the fill colour for the area under all points when there is at least one nan. So, the statement "Use NaN and Inf values to create breaks in the lines" does not apply to waterfalls behaviour.
I would suggest two possible solutions:
  1. Documentation says: The area under the plot lines will only be filled if the data contains no NaN or Inf values
  2. Modify the area-filling algorithm so that it can handle NaN values (This would involve drawing filling up to the point where a Nan occurs).
Bill Tubbs
Bill Tubbs 2021-6-18
I just checked and a regular area plot exhibits the behaviour I was suggesting for solution #2:
figure(3)
subplot(2,1,1)
x = -5:.5:5;
y = sin(x)+2;
area(x, y)
grid on
subplot(2,1,2)
y(x == 0) = nan;
area(x, y)
grid on

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Data Distribution Plots 的更多信息

产品


版本

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by