首页/文章/ 详情

MATLAB编程技巧 | 三种方式实现单组柱状图颜色设定(附示例代码)

1天前浏览4
最近DeepSeek横空出世,编程也越来越容易。

不过要实现自己的特定想法,设计提问中的“提示词”非常重要。否则,也帮不了你的忙。


对于单组柱状图的每个柱子颜色,MATLAB有以下三种模式实现。

方式一: 及时模式 

直接在bar函数中通过给定参数属性,进行颜色设定。

% Way 1: Timely mode
bar(y,'CData', bColorMap,'FaceColor','flat','LineStyle','none'); % Start from R2017b
 

其中,bColorMap为设定的颜色值。


方式二: 顺序模式

bar缺省模式绘图,修改颜色数据b.CData属性等顺序模式绘图。

% Way 2: Subsequent mode
b = bar(y);
b.FaceColor = 'flat';
% b.CData = slanCM(100,length(b.XData)); % 42 56 63 100 133 187 188
b.CData = bColorMap;
b.LineStyle = 'None';
 

其中,bColorMap为设定的颜色值。


方式三:循环模式

按循环模式修改每个柱子的颜色实现。

% Way 3: Loop mode
hold on
for k = 1:numberOfBars
    b = bar(k,y(k)); 
    set(b,'FaceColor', bColorMap(k,:),'EdgeColor','none');
end
 

其中,bColorMap为设定的颜色值。

以下给出完整实例代码。

%==========================================================================
% BARSGLGRAPH Draw single-group bar graphs with different Colors
%
%    Copyright (c) 2006-2024 Zhenming Peng
%    IDIPLAB,
%    School of Information and communication engineering,
%    University of Electronic Science and Technology of China
%    http://idiplab.uestc.cn/
%
%   Revised: 2024.10.20
% See Also BARM2GGRAPH,BARMGPGRAPH
%==========================================================================
clc,clear,close all

% Figure position and size
set(gcf,'Unit','Centimeters','Position',[20,10,16 10])

% White Background
set(gcf,'Color','White'); 

% -----------------------------------------------------------------------
% Demo1 单组数据Bar的颜色显示
% -----------------------------------------------------------------------
% 6x1 groups     % Default:所有Bar颜色一致
% y  = [0.80, 1.0, 0.565, 0.508, 0.481, 0.745]; % Give data
% y = randi([2,15],[1,25])+rand([1,25]);        % Random data
y = rand(1,13);  % Random data
% b = bar(y);    % Default:'style' = 'grouped''width' = 0.8,
                 % FaceColor = [0.00 0.45.0.74]
                 % FaceAlpha = 1
                 % EdgeColor = [1 1 1]

numberOfBars   = length(y);

% Custom colors
bColorMap = diyCM(83,numberOfBars);      % 1-83
% bColorMap = colormap(summer(numberOfBars)); % MATLAB colormap

% Way 1: Timely mode
bar(y,'CData', bColorMap,'FaceColor','flat','LineStyle','none'); % Start from R2017b

% % Way 2: Subsequent mode
% b = bar(y);
% b.FaceColor = 'flat';
% % b.CData = slanCM(100,length(b.XData)); % 42 56 63 100 133 187 188
% b.CData = bColorMap;
% b.LineStyle = 'None';

% % Way 3: Loop mode
% hold on
for k = 1:numberOfBars
%     b = bar(k,y(k)); 
%     set(b,'FaceColor', bColorMap(k,:),'EdgeColor','none');
% end

title('Single-group Bar With Different Colors','FontSize',13);
set(gca,'XTick',1:numberOfBars)
xlabel('Bar Numbers'); ylabel('Data Value');
ylim([0 1.05*max(y(:))]);
%colorbar
grid on, box on
 

Demo运行结果如下:

以上代码,通过改变bColorMap值,可以获得不同颜色分布的柱状图。

如果在运行中缺少关联函数,可以在往期推文中查询,也可通过私信提供。




图文:牧码人

编辑:刘思敏

来源:现代石油人
MATLABUM曲面
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-02-19
最近编辑:1天前
现代石油人
博士 签名征集中
获赞 28粉丝 94文章 896课程 1
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈