不过要实现自己的特定想法,设计提问中的“提示词”非常重要。否则,也帮不了你的忙。
对于单组柱状图的每个柱子颜色,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
值,可以获得不同颜色分布的柱状图。
如果在运行中缺少关联函数,可以在往期推文中查询,也可通过私信提供。
图文:牧码人