colormap doesn't work with bar plots in 2019a

조회 수: 9 (최근 30일)
Clay Fulcher
Clay Fulcher 2020년 3월 27일
편집: Clay Fulcher 2025년 4월 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