How to set zero value boxes transparent in 3D plots?
5 次查看(过去 30 天)
显示 更早的评论
I used a function called ind2patch to make a big 3D block which contains a number of smaller blocks in 3 dimensions. Each small block has a value which the magnitude is represented by a color.One example is shown below: https://www.dropbox.com/s/jlyxxgo1urwipom/DisDen.png?dl=0
However, most of the boxes have very low or zero value and I don't need to show them. How can I make these boxes transparent? I just want to show the boxes with non-zero value.
For the above 3D plot I use a matrix M to store the value of each box (i,j,k) and use the following algorithm to plot:
indPatch=1:numel(M);
[F,V,C]=ind2patch(indPatch,M,'v'); %Call the function ind2patch in order to plot 3D cube with color
xlabel('y','fontsize',20);ylabel('x','fontsize',20); zlabel('z','fontsize',20); hold on;
set(get(gca,'xlabel'),'Position',[5 -50 30]); %set position of axis label
set(get(gca,'ylabel'),'Position',[5 50 -15]);
set(get(gca,'zlabel'),'Position',[64 190 -60]);
patch('Faces',F,'Vertices',V,'FaceColor','flat','CData',C,'EdgeColor','k','FaceAlpha',0.5);
axis equal; view(3); axis tight; axis vis3d; grid off;
0 个评论
回答(1 个)
Walter Roberson
2016-5-17
Do not use the constant 0.5 for FaceAlpha. Instead use FaceAlpha 'flat' and set FaceVertexAlphaData to the appropriate per-face alpha data. That would probably look something like
double(C > SomeCutoffValue)
as that would give alpha 0 for all values below the cutoff
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Graphics Performance 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!