Matlab示例代码无法在Matlab 2017a(
Linux 64位)中运行:
b = bar(rand(10,1));
b.FaceColor = 'flat';
b.CData(2,:) = [.5 0 .5];
它无法对特定条形图进行着色并发出警告:
No public property CData exists for class matlab.graphics.chart.primitive.Bar.
我不知道它仅仅是Matlab 2017b的特定功能吗?
此代码仅用于为特定条形图着色.在Matlab 2012a中,它可以通过以下方式轻松完成:
bh=bar(MyStem); h=get(bh, 'children');
shading flat; set(h,'FaceVertexCData',MyColor);
我无法理解为什么Matlab 2017会删除此功能.
最佳答案 关于CData属性,我已在评论中写道.
无论如何,我认为另一种解决方法可能比建议的更简单,可以是:
x=rand(1,10);
b=bar([x;zeros(1,length(x))]);
xlim([0.5 1.5])
set(b,'FaceColor','r')
set(b(2),'FaceColor','b')
如果要像常规条形图中那样对条形编号,可以添加以下内容:
set(gca,'XTick',0.5+[b.XOffset])
set(gca,'XTicklabels',1:length(x))