Matlab 2015b中如何修改柱状图单个柱子的颜色?
在MATLAB R2015b中修改单个柱状图柱子的颜色
在MATLAB R2015b中,柱状图的对象模型和较新版本有明显区别,你遇到的属性不存在问题正是因为这个差异。下面是适配R2015b的解决方案:
可行方案:操作柱子的底层Patch对象
在R2015b中,bar函数返回的是一个整体的Bar对象,单个柱子实际上是由多个Patch子对象组成的。我们需要先获取这些Patch对象,再单独修改目标柱子的属性:
% 绘制基础柱状图 b = bar(1:30); % 获取所有柱子对应的Patch对象数组 patchObjs = findobj(b, 'Type', 'Patch'); % 找到最大值对应的柱子索引 [bv, bi] = max(1:30); % 修改目标柱子的外观属性 patchObjs(bi).FaceColor = [0.4 0.4 0.4]; % 设置填充颜色为深灰色 patchObjs(bi).EdgeColor = 'red'; % 设置边框为红色 patchObjs(bi).LineWidth = 2; % 加粗边框宽度
为什么你的原有代码会报错?
- 你尝试用
b(bi)访问单个柱子:在R2015b中,bar返回的不是单个柱子的对象数组,而是一个整体的Bar容器,因此b(bi)会返回GraphicsPlaceholder,自然没有LineWidth或EdgeColor属性。 - 你尝试设置
b.CData:R2015b的Bar对象并不具备CData属性,这个属性是后续版本才添加的,所以直接赋值会提示找不到该字段。
这个方法直接操作组成柱子的底层图形对象,完全适配R2015b的版本特性,能精准修改单个柱子的外观。
内容的提问来源于stack exchange,提问作者MahD
相关产品推荐
相关产品推荐

