您能为血压与特定年龄(MATLAB)创建箱形图吗?

时间:2018-12-07 17:36:56

标签: matlab

对于我的项目,我正在使用一个名为hospital.mat的matlab样本数据集,并试图创建一个血压对特定年龄范围的箱线图(如下所示)。当我尝试创建箱线图时,收到一条错误消息,提示矩阵尺寸必须一致。我认为这可能是因为血压数据同时测量了收缩压和舒张压(这很好),或者是因为当我仅查找特定年龄范围的血压时,它正在收集所有年龄段患者的完整数据。

医院的矩阵。年龄为100 x 1的两倍,医院的矩阵。血压为100 x 2的两倍

load hospital.mat %Sample data provided by matlab
x=hospital.Age;
x(hospital.Age<35,:)=-1;
x(hospital.Age>=35 & hospital.Age<45)=-2;
x(hospital.Age>=45)=-3;
boxplot(hospital.BloodPressure==x(hospital.Age<35,:),x(hospital.Age<35,:));

任何帮助都会很棒!谢谢。

1 个答案:

答案 0 :(得分:2)

您可以将设置为分组变量的值存储在数据集hospital中。 boxplot的第二个参数是分组变量,可以是任何变量,因此在您的情况下可以是“年龄标签”。

我拿了这些标签中的abs,以确保框线图的年龄从左到右增加。

load hospital.mat %Sample data provided by matlab

x = hospital.Age;
x(hospital.Age<35,:) = -1;
x(hospital.Age>=35 & hospital.Age<45) = -2;
x(hospital.Age>=45) = -3;

% store labels in data set to use as grouping variable
hospital.AgeLabels = x;

% create the figure
figure()
ax(1) = subplot(121);
boxplot(hospital.BloodPressure(:,1), abs(hospital.AgeLabels))
title('BloodPressure 1')

ax(2) = subplot(122);
boxplot(hospital.BloodPressure(:,2), abs(hospital.AgeLabels))
title('BloodPressure 2')

% set meaningfull ticklabels for both subplots
for ii = 1:2
    ax(ii).XTickLabels = {'<35', '>=35 & <45', '>= 45'};
end

enter image description here