Matlab: bar No public 属性 CData存在
Matlab: bar No public property CData exists
Matlab 示例代码不能在 Matlab 2017a(Linux 64 位)中 运行:
https://cn.mathworks.com/help/matlab/ref/bar.html
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 会删除此功能。
你可以这样实现你想要的:
b = bar([rand(1,3);nan(1,3)],'b');
b(2).FaceColor = 'r';
您也可以通过使用不同的值多次调用 bar 函数来实现此目的(这是您有时可能需要使用的一种做法):
A = [1,2,3,4,1,3,2];
bar([1],A(1),'FaceColor','r');
bar([2:4],A(2:4),'FaceColor','g');
bar([5:7],A(5:7),'FaceColor','b');
关于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))
Matlab 示例代码不能在 Matlab 2017a(Linux 64 位)中 运行: https://cn.mathworks.com/help/matlab/ref/bar.html
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 会删除此功能。
你可以这样实现你想要的:
b = bar([rand(1,3);nan(1,3)],'b');
b(2).FaceColor = 'r';
您也可以通过使用不同的值多次调用 bar 函数来实现此目的(这是您有时可能需要使用的一种做法):
A = [1,2,3,4,1,3,2];
bar([1],A(1),'FaceColor','r');
bar([2:4],A(2:4),'FaceColor','g');
bar([5:7],A(5:7),'FaceColor','b');
关于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))