别人的问题,经常被问到,记录一下。
目的是根据bar的值,设置 bar的color.
思路,
不同的版本,实现方法不太一样。
2014a之后,是用bar一个一个的画。
2014a之前,是设置children的color.
clear all clc clf %% outline % http://www.ilovematlab.com/thread-545585-1-1.html % mod : 17-May-2018 10:24:20 %% main % generate bar data a=randn(5000,1); [hi_va,hi_bi]=hist(a,linspace(-4,4,40)); hi_va=hi_va./sum(hi_va); n_bar = length(hi_bi); hi_max = max(hi_va); % generate color n_col=100; col_mm = colormap(jet(n_col)); % plot bar each time hold on for i =1:n_bar ind_col = floor((n_col-1)*hi_va(i)/hi_max)+1; % connect hi_va and colormap bar(hi_bi(i),hi_va(i),'edgecolor','none',... 'facecolor',col_mm(ind_col,:),... 'barwidth',0.18); end % other setting colormap(col_mm) caxis([0 hi_max]) colorbar box on grid on %% 2014a and before % a=randn(5000,1); % [hi_va,hi_bi]=hist(a,linspace(-4,4,40)); % hi_va=hi_va./sum(hi_va); % n_bar = length(hi_bi); % hi_max = max(hi_va); % % % generate color % n_col=100; % col_mm = colormap(jet(n_col)); % h=bar(hi_bi,hi_va); % ch = get(h,'Children'); % fvd = get(ch,'Faces'); % fvcd = get(ch,'FaceVertexCData'); % for row = 1:n_bar % fvcd(fvd(row,:)) = hi_va(row); % end % % set(ch,'FaceVertexCData',fvcd) % caxis([0 hi_max]) % % colorbar % grid on %% logs % mod : 17-May-2018 10:25:33