更改Matlab条形图中条形元素的颜色?

更改Matlab条形图中条形元素的颜色?,matlab,graph,colors,Matlab,Graph,Colors,如何更改条形图中某个条形元素的颜色?因为我的Matlab版本(2015b)似乎不允许我使用b.LineWidth b.EdgeColor或CData。我的代码如下所示 b = bar(1:30); b.FaceColor = 'flat'; [bv,bi] = max(1:30); b(bi).LineWidth = 2; b(bi).EdgeColor = 'red'; 使用b.LineWidth和b.EdgeColor时出现此错误 类matlab.graphics.GraphicsP

如何更改条形图中某个条形元素的颜色?因为我的Matlab版本(2015b)似乎不允许我使用b.LineWidth b.EdgeColor或CData。我的代码如下所示

b = bar(1:30); 
b.FaceColor = 'flat'; 
[bv,bi] = max(1:30); 
b(bi).LineWidth = 2;
b(bi).EdgeColor = 'red';
使用b.LineWidth和b.EdgeColor时出现此错误

类matlab.graphics.GraphicsPlaceholder不存在公共属性线宽。tt中的错误(第5行)

以及使用CData时的错误

b = bar(1:30); 
b.FaceColor = 'flat'; 
[bv,bi] = max(1:30);
b.CData(bi) = [0.4,0.4,0.4];
对于类“matlab.graphics.chart.primitive.Bar”,没有合适的方法、属性或字段“CData”。

(我今天刚刚学到了一些新东西!)

看起来,
有,产生不同的句柄图形对象类型。
style
输入参数选择操作模式:

  • bar(…,'grouped')
    bar(…,'stacked')
    生成一个
    bar
    对象。请注意,
    grouped
    是默认样式

  • bar(…,'hist')
    bar(…,'hist')
    生成一个
    Patch
    对象

不指定
hist
模式生成不同的对象类型,我假设输出类型与我的MATLAB版本(R2017a)相同

第一种模式生成的
条形图
对象没有
CData
属性。有一个
FaceColor
EdgeColor
属性。有关更多信息,请参阅。但请注意,这是一个单独的对象,因此无法索引到控制柄并设置单个条的属性。属性可同时控制所有条形图:

b = bar(1:30); 
b.FaceColor = 'flat'; 
b.LineWidth = 2;
b.EdgeColor = 'red';
例外情况是
XData
YData
属性,每个条有一个值

第二种模式生成的
Patch
对象具有
CData
属性。操作起来有点复杂,因为
面片
具有每个顶点和每条边的坐标。但是,
CData
属性可以根据您的需要以不同的方式设置。设置为
N
x1数组(带有
N
条数),它会为每个条在颜色映射中提供索引(但有关如何解释该索引,请参见轴“
Clim
属性)。设置为
N
x1x3阵列,它会为每个条提供一个RGB三元组。有关更多信息,请参阅。以下是一个例子:

b = bar(1:30,'hist'); 
b.FaceColor = 'flat'; 
b.LineWidth = 2;
b.EdgeColor = 'red';
cols = zeros(30,1,3)+0.5;
cols(5,1,:) = [1,0,0];
b.CData = cols;

[归功于]

您确定它没有
线宽
边缘颜色
?另有说明。这也都在报告中明确提到了。是的,肯定。这是错误;类“matlab.graphics.chart.primitive.Bar”没有合适的方法、属性或字段“CData”。tt(第5行)b.CData(bi)=[0.4,0.4,0.4]中的错误;以及其他人;类matlab.graphics.GraphicsPlaceholder不存在公共属性线宽。tt(第5行)b(bi)中的错误。线宽=2
matlab.graphics.GraphicsPlaceholder
表示您没有正确寻址
bar
的输出。请在你的帖子中包含a.
b(bi)。线宽=2不在您提供的代码中。请再读一遍。如果你不这么做,我们帮不了你。非常感谢你@Cris Luengo。我想知道如何将FaceColor设置为e.x.蓝色?如果您希望它们都是相同的颜色,只需执行
b.FaceColor='blue'
,如果您希望它们除了一个以外都是蓝色,请使用
hist
模式,并设置
cols=0(30,1,3);cols(:,1,3)=1;cols(5,1,:)=[1,0,0];b、 CData=cols或其他类似的东西