colormap doesn't work with bar plots in 2019a

8 次查看(过去 30 天)
I have been changing the colormap in bar charts for decades. It doesn't seem to work now with bar charts in 2019a.
Previously all I had to do to change the colormap in an existing bar chart to copper: colormap copper
Now it does nothing.

采纳的回答

Cris LaPierre
Cris LaPierre 2020-3-27
Not sure if it's changed, but here's an example borrowed from the doc on bar.
y = [1 3 5; 3 2 7; 3 4 2];
b = bar(y,'FaceColor',"flat");
for k = 1:size(y,2)
b(k).CData = k;
end
If I want to use a different colormap, I could do this.
colormap copper
y = [1 3 5; 3 2 7; 3 4 2];
b = bar(y,'FaceColor',"flat");
for k = 1:size(y,2)
b(k).CData = k;
end
  3 个评论
KV
KV 2024-2-9
I discovered this issue too today, working through some legacy code! This solution breaks a lot of older code that was used to produce plots.
Kind of silly and quite a pity now that it'll take a for loop with each bar command to change facecolors....
Clay Fulcher
Clay Fulcher 2025-4-30
编辑:Clay Fulcher 2025-4-30
Cris and KV,
This issue became so annoying that I finally wrote a function to quickly change the colormap of a bar graph. Here it is.
function barcolormap(axesobject,cmap)
%
% This function changes the colormap used with bar graphs.
% USAGE
% barcolormap(axesobject,cmap)
%
% INPUT
% axesobject - the axes object from an existing plot or subplot. Get this
% from the existing axes with axesobject=gca;
% cmap - string containing the chosen colormap. Pre-defined colormaps are:
% parula
% turbo
% hsv
% hot
% cool
% spring
% summer
% autumn
% winter
% gray
% bone
% copper
% pink
% sky (since R2023a)
% abyss (since R2023b)
% jet
% lines
% colorcube
% prism
% flag
% white
%
% EXAMPLE
% bar(rand(6,3));
% axesobject=gca;
% cmap='copper';
% barcolormap(axesobject,cmap); % Change colormap to copper
% barcolormap(axesobject,'winter'); % Change colormap to winter
%
% USAGE
% barcolormap(axesobject,cmap)
%
h=axesobject;
set(h,'colormap',eval(cmap))
hbar=get(h,'children');
Lbar=length(hbar);
for i=1:Lbar
set(hbar(i),'FaceColor','flat');
hbar(i).CData=i;
end

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Color and Styling 的更多信息

产品


版本

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by