如何更改条形图中某个条形元素的颜色?因为看起来我的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不存在公共属性LineWidth。 tt中的错误(第5行)
以及使用CData的错误;
b = bar(1:30);
b.FaceColor = 'flat';
[bv,bi] = max(1:30);
b.CData(bi) = [0.4,0.4,0.4];
没有合适的方法,财产或字段' CData' for class' matlab.graphics.chart.primitive.Bar'。
答案 0 :(得分:1)
(我今天刚学到了新东西!)
似乎bar
有two main modes of operation,产生不同的句柄图形对象类型。 style
输入参数选择操作模式:
bar(...,'grouped')
或bar(...,'stacked')
生成Bar
个对象。请注意,grouped
是默认样式。
bar(...,'hist')
或bar(...,'histc')
生成Patch
个对象。
The documentation未指定hist
模式生成不同的对象类型。 In R2015b these same options existed,我假设输出类型与我的MATLAB版本(R2017a)相同。
第一种模式生成的Bar
对象没有CData
属性。有一个FaceColor
和EdgeColor
属性。有关详细信息,请参阅Bar
properties documentation。但请注意,这是一个单个对象,因此您无法索引句柄并设置单个条的属性。属性同时控制所有条形:
b = bar(1:30);
b.FaceColor = 'flat';
b.LineWidth = 2;
b.EdgeColor = 'red';
例外是XData
和YData
属性,每个条有一个值。
第二种模式生成的Patch
对象确实具有CData
属性。操作起来有点复杂,因为Patch
具有每个顶点和每个边的坐标。但CData
属性可以根据您的需要以不同方式设置。设置为N
x1数组(条形数为N
),它为每个条形图的颜色贴图提供索引(但另请参阅轴' Clim
属性以了解如何该索引被解释)。设置为N
x1x3数组,它为每个条形提供RGB三元组。有关详细信息,请参阅Patch
properties documentation。这是一个例子:
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;