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

问题描述 投票:0回答:1

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

matlab bar-chart matlab-figure axis-labels
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.