matlab三维柱状图bar3c能不显示吗?
我想让三维柱状图中的零元素隐藏掉,请高人指点回复 楼主 eric415 的帖子
没用过, 刚搜了下, 没bar3c!?水平专业有限, 可否举例并给齐代码! 好试看看! 啊,我打错了,是bar3。比如画一个单位矩阵,bar3(eye(5),'detached');
画出来的
http://forum.vibunion.com/data/attachment/album/200912/30/89781_1262158649SjJV.jpg
我想让等于零的地方不显示
[ 本帖最后由 friendchj 于 2009-12-30 15:38 编辑 ] 记得二楼提到过,可以让零值赋以 NaN,让它不显示。 原帖由 friendchj 于 2009-12-30 02:43 发表
记得二楼提到过,可以让零值赋以 NaN,让它不显示。
昨天就是朝这个方向试, 但是没有成功!
我想可能需采用最原始的作法, 进入bar3.m修改了!
sorry! 待高人路过! 先磕个头:@) 直接修改bar3.m太难了,这个命令是把同一种颜色的柱状图一次画出以后,再画另一种颜色的图,如果要隐藏零元素,则需要改为同一种颜色的柱状图分开画出,需要改很多东西,而且在改之前还要搞明白绘制流程。
因为bar3是将同一种颜色的柱状图一起画出的,所以同一种颜色的图是一个句柄,因而不能通过修改句柄而达到隐藏零元素的目的,因为修改句柄后,连不为零的同一颜色的柱状图也隐藏了。
想了一种变通方法,即将零元素图遮盖。在画完需要画的柱状图后,再叠加一幅白色的元素全图零的柱状图,从而达到近似隐藏的效果。
z=eye(3)
bar3(z)
hold on
z0=zeros(3) %添加一个z=0的柱状图
h0=bar3(z0)
set(h0(1:3),'FaceColor','white', 'EdgeColor','cyan') 原帖由 messenger 于 2009-12-30 23:54 发表
直接修改bar3.m太难了,这个命令是把同一种颜色的柱状图一次画出以后,再画另一种颜色的图,如果要隐藏零元素,则需要改为同一种颜色的柱状图分开画出,需要改很多东西,而且在改之前还要搞明白绘制流程。
因为bar3是将同一种颜色的柱状图一起画出的,所以同一种颜色的图是一个句柄,因而不能通过修改句柄而达到隐藏零元素的目的,因为修改句柄后,连不为零的同一颜色的柱状图也隐藏了。 ...
早上试了下, 的确如此! 如果出现负值的话就不完美了。
M=diag()
bar3(M)
hold on
z0=zeros(5,5) %添加一个z=0的柱状图
h0=bar3(z0)
set(h0(1:5),'FaceColor','white', 'EdgeColor','cyan')
有没有办法让等于零的地方是透明的
回复 9楼 eric415 的帖子
那就可能如5F所说的, 很麻烦了! 可以找一个函数单独画长方体就ok了,在官网下一个voxel函数,然后可以这样:clc
clear
M=diag();
=size(M);
hold on
for i=1:l1
for j=1:l2
if abs(M(i,j))>eps
voxel(,[.3,.3,M(i,j)],.7);
end
end
end
grid on
view()
hold off 高手就是不一样。。昨天一直在找能够代替bar3的函数,可就是没有合适的。。 的确friendchj不仅是难得的高手, 也蛮认真实在的!
个人尽忘记去官网搜看看!:@L 这个问题终于解决圆满了,谢谢friendchj老师,谢谢大家 真是顶级高手啊 我也遇到这个问题了
页:
[1]
2