How to generate barplot like this on a given data?

2 views (last 30 days)
Sharan Magavi
Sharan Magavi on 13 Jan 2020
Commented: Mathieu NOE on 13 Dec 2021
This image is taken from the matlab examples. In the example bar plot is used but bar plot doesn't seem to have any [name, value] pair to represent the plot like this.
  2 Comments
Chih
Chih on 10 Dec 2021
The question is "HOW to create such plot"...

Sign in to comment.

Answers (1)

Mathieu NOE
Mathieu NOE on 13 Dec 2021
hello
example of horizontal bar plot
clc
clearvars
close all
data_co2 = [.142 .156 .191 .251 0.5 0.86 2.2 4 8.3];
data_gdp = rand(size(data_co2));
uniNames = {'eno','pck','zwf','foo','bar','jhy','vfd','vre','zqs'};
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%% main code %%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
data_min = min(data_gdp);
data_max = max(data_gdp);
map = colormap('jet');
[mmap,nmap] = size(map);
f = figure(1);
% fig_pos = [681 105 683 874];
% set(f,'Position',fig_pos);
N = numel(data_co2);
for i=1:N
h = barh(N-i+1, data_co2(i));
if i == 1, hold on, end
% now define col value based on data value (min data value maps to colormap map index 1
% and max data value maps to colormap map last index);
ind = fix(1+(mmap-1)*(data_gdp(i)-data_min)/(data_max-data_min));
set(h, 'FaceColor', map(ind,:)) ;
% Display the values as labels at the tips of the bars.
xtips1 = h.YEndPoints + 0.15;
ytips1 = h.XEndPoints;
labels1 = string(h.YData);
text(xtips1,ytips1,labels1,'VerticalAlignment','middle')
end
%
set(gca, 'YTickLabel', '')
ylabetxt = uniNames;
xpos = -max(ylim)/12;
text(repmat(xpos,N,1),1:N, ylabetxt','Rotation',0,'FontSize',15,'VerticalAlignment','middle');
xlabel('CO² concentration','FontSize',15,'HorizontalAlignment','left')
title('CO² concentration vs. GDP range','FontSize',15)
hcb=colorbar('hor');
hcb.Title.String = "GDP range";
hcb.Title.HorizontalAlignment = "right";
hcb.Title.VerticalAlignment = "cap";
hcb.Title.FontSize = 15;

Community Treasure Hunt

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

Start Hunting!

Translated by