声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 9296|回复: 21

[绘图技巧] matlab三维柱状图bar3c能不显示吗?

[复制链接]
发表于 2009-12-24 20:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我想让三维柱状图中的零元素隐藏掉,请高人指点
回复
分享到:

使用道具 举报

发表于 2009-12-24 21:17 | 显示全部楼层

回复 楼主 eric415 的帖子

没用过, 刚搜了下, 没bar3c!?
水平专业有限, 可否举例并给齐代码! 好试看看!
 楼主| 发表于 2009-12-29 16:03 | 显示全部楼层
啊,我打错了,是bar3。比如画一个单位矩阵,bar3(eye(5),'detached');
画出来的

                               
登录/注册后可看大图


我想让等于零的地方不显示

[ 本帖最后由 friendchj 于 2009-12-30 15:38 编辑 ]
发表于 2009-12-30 02:43 | 显示全部楼层
记得二楼提到过,可以让零值赋以 NaN,让它不显示。
发表于 2009-12-30 08:19 | 显示全部楼层
原帖由 friendchj 于 2009-12-30 02:43 发表
记得二楼提到过,可以让零值赋以 NaN,让它不显示。

昨天就是朝这个方向试, 但是没有成功!
我想可能需采用最原始的作法, 进入bar3.m修改了!
sorry! 待高人路过!
 楼主| 发表于 2009-12-30 14:13 | 显示全部楼层
先磕个头:@)
发表于 2009-12-30 23:54 | 显示全部楼层
直接修改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')
1.png

评分

1

查看全部评分

发表于 2009-12-31 00:06 | 显示全部楼层
原帖由 messenger 于 2009-12-30 23:54 发表
直接修改bar3.m太难了,这个命令是把同一种颜色的柱状图一次画出以后,再画另一种颜色的图,如果要隐藏零元素,则需要改为同一种颜色的柱状图分开画出,需要改很多东西,而且在改之前还要搞明白绘制流程。
因为bar3是将同一种颜色的柱状图一起画出的,所以同一种颜色的图是一个句柄,因而不能通过修改句柄而达到隐藏零元素的目的,因为修改句柄后,连不为零的同一颜色的柱状图也隐藏了。 ...

早上试了下, 的确如此!
 楼主| 发表于 2010-1-8 13:21 | 显示全部楼层
如果出现负值的话就不完美了。
M=diag([1,-1,2,-2,3])
bar3(M)
hold on
z0=zeros(5,5)    %添加一个z=0的柱状图
h0=bar3(z0)
set(h0(1:5),'FaceColor','white', 'EdgeColor','cyan')
有没有办法让等于零的地方是透明的
untitled.jpg
发表于 2010-1-8 19:43 | 显示全部楼层

回复 9楼 eric415 的帖子

那就可能如5F所说的, 很麻烦了!
发表于 2010-1-9 07:11 | 显示全部楼层
可以找一个函数单独画长方体就ok了,在官网下一个voxel函数,然后可以这样:
clc
clear
M=diag([1,-1,2,-2,3]);
[l1,l2]=size(M);
hold on
for i=1:l1
    for j=1:l2
        if abs(M(i,j))>eps
        voxel([i,j,0],[.3,.3,M(i,j)],.7);
        end
    end
end
grid on
view([65,22])
hold off
untitled.jpg

评分

1

查看全部评分

发表于 2010-1-9 10:11 | 显示全部楼层
高手就是不一样。。昨天一直在找能够代替bar3的函数,可就是没有合适的。。
发表于 2010-1-9 17:06 | 显示全部楼层
的确friendchj不仅是难得的高手, 也蛮认真实在的!
个人尽忘记去官网搜看看!:@L
 楼主| 发表于 2010-1-9 18:22 | 显示全部楼层
这个问题终于解决圆满了,谢谢friendchj老师,谢谢大家

voxel.m

1.43 KB, 下载次数: 11

评分

1

查看全部评分

发表于 2012-2-24 22:21 | 显示全部楼层
真是顶级高手啊 我也遇到这个问题了
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-4 12:06 , Processed in 0.152795 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表