Matlab – 3D bars arrays without empty elements

bar3 is an useful command to illustrate multi-dimensional distributions.  If the colors of the beams represent its value, the diagram gives a  good overview. But the code examples given in the Matlab help work just  fine for matrices without “0” elements. The following figure shows a  bar3 diagram that includes values from 0 to 7. The colors of the “0”  elements are completely wrong.

Y=[0 0 0 3 5
   0 2 5 7 0 ];
h=bar3(Y);
colorbar

Hence, a quite more representative way is to eliminate the zeros by  manipulating the zdata entries of the figure. Just by setting each zero  value on NaN it is invisible! Especially for larger diagrams the effect  looks nice.

Y=[0 0 0 3 5
   0 2 5 7 0 ];

h=bar3(Y);
for i = 1:size(Y,2)
    zdata = get(h(i),'zdata');
    k = 1;
    for j = 0:6:(6*size(Y,1)-6)
        if Y(k,i)==0
         zdata(j+1:j+6,:)= NaN; 
        end
        k = k+1;
    end
    set(h(i),'zdata',zdata);
end 

colorbar

Filtered bar3 diagram

The code was tested with Matlab 2008b