Matlab-具有两个图和两个轴的条形图

时间:2019-11-08 14:43:50

标签: matlab bar-chart matlab-figure axis-labels

我要在一个图中绘制两个数组。条形图必须显示两个y轴以及彼此相邻的条形图。当我要同时实现这两个要求时,就会出现问题。

例如,我可以将条形图绘制在一起

Y = [5,2; 8,7; 9,8; 5,5; 4,3];
figure
bar(Y)

或者我可以创建两个y轴(目前我正在处理我的数据):

y = [lr_flights2018, lr_income2018]; 
yyaxis left
b = bar(1:length(y),lr_flights2018);
ylabel('Life Rating/flights ratio')
yyaxis right
p = bar(1:length(y),lr_income2018);
ylabel('Life Rating/income ratio')
set(gca, 'XTick', 1:length(y))
set(gca,'XTickLabel',{countries{:,1}})
xtickangle(90)
title('Correlations with life rating');

在后一种情况下,yyaxis分离出导致two plots stacked together的图。我希望每个图并排放置,如图所示。 this example

1 个答案:

答案 0 :(得分:2)

您可以通过操纵x位置和条形宽度

如下所示,我操纵了您的Y数据,并为您在示例中未提供的国家/地区添加了一些新标签

figure;
Y = [5,2; 8,7; 9,8; 5,5; 4,3];;
lr_flights2018 = Y(:,1);
lr_income2018 = Y(:,2);
y = [lr_flights2018, lr_income2018]; 
yyaxis left
b = bar((1:length(y))+0.125,lr_flights2018, 'barwidth', 0.25);
ylabel('Life Rating/flights ratio')
yyaxis right
p = bar((1:length(y))-0.125,lr_income2018, 'barwidth', 0.25);
ylabel('Life Rating/income ratio')
set(gca, 'XTick', 1:length(y))
str = strread ( sprintf ( '%i\n', [1:5] ), '%s', 'delimiter', '\n' )
set(gca,'XTickLabel',str)
xtickangle(90)
title('Correlations with life rating');

example output from r2018b