带彩色条的条形图:2012b和2014b之间的差异

8次(过去30天)
D、 贝诺伊
D、 贝诺伊 21 2014年十一月
评论: D、 贝诺伊2014年11月24日
你好,
从Matlab2012b升级到MATLAB2014b时,函数barh有问题。
我有以下功能
功能并[h] = barh_colored(PHI,Cmin的,CMAX,对数线性)
%此处是此函数的无标题摘要
%这里有详细的解释
nbars2=64;
如果cmax~=-1
xbars=cmin:(cmax-cmin)/(nbars2-1):cmax;
[计数,x]=历史(phi,xbar);
其他的
[计数,x]=历史(phi,nbars2);
结束
如果strcmp(对数线性,'日志')
h=巴(x,对数10(计数),1);
其他的
h=barh(x,计数,1);
结束
设置(gca,'YAxisLocation','对');
ch=得到(h,'儿童');
fvd=获取(ch,'面孔');
fvcd=获取(ch,'FaceVertexData');
cmap=获取(gcf,'颜色映射');
彩色地图(cmap);
对于I = 1:nbars2
fvcd(fvd(i,:))=i;
结束
设置(ch,'FaceVertexData',fvcd)
如果cmax~=-1
ylim([cmin-cmax]);
结束
结束
此代码在MATLAB 2012b中运行良好。它生成如下图:
最近我切换到Matlab2014b,代码不再工作。原因是barh对象不再有子对象,因此:
ch=得到(h,'儿童');
返回一个空的GraphicsPlaceHolder对象。
我该怎么解决?
达尼贝诺

0条评论

登入发表评论。

接受的答案

道格赫尔
道格赫尔 21 2014年十一月
子项的栏属性不再可用。
这是沿着你想要完成的任务线:
酒吧([1 nan nan],'面颜色',[10 0])
持有
酒吧([nan 2 nan],'面颜色',[0 1 0])
酒吧([nan nan 3],'面颜色',[0 0 1])
持有远离的

1条评论

D、 贝诺伊
D、 贝诺伊 2014年11月24日
嗨,道格,
谢谢你的回答。我把我的功能提升到
功能条形(phi)
nbars2=64;
cmap=获取(gcf,'颜色映射');
[计数,x]=历史(phi,nbars2);
y=NaN*个(1,nbars2);
对于I = 1:nbars2
y1=y;
y1(i)=计数(i);
barh(x,y1,'条形图',1,...
'面颜色',cmap(i,:);
如果i==1,保持,结束
结束
设置(gca,'YAxisLocation','对');
结束
达尼贝诺

登入发表评论。

更多答案(1)

哑光短线
哑光短线 2014年11月22日
我遇到了同样的问题。我通过编写自己的bar函数来解决这个问题,该函数用补丁构造条并用hggroup包装它们,因此输出与bar以前的工作方式完全兼容。这不是很难,尤其是如果你不需要任何高级功能,如堆叠/分组条。
(很抱歉,我知道这不是最有用的答案,但需要考虑一下)
我基本上是一个新图形的忠实粉丝,但酒吧似乎真的走下坡路了。我真正的问题是当你调整一个条形图的大小时运行的非常慢的限制检查方法。。。几乎使它们无法大量使用(子块等)。

0条评论

登入发表评论。

登入来回答这个问题。