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

我要在一个图中绘制两个数组。条形图必须显示两个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

alwvp 回答:Matlab-具有两个图和两个轴的条形图

您可以通过操纵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,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

本文链接:https://www.f2er.com/3137133.html

大家都在问