能否在MATLAB中为血压与特定年龄创建一个箱线图?

3
我正在使用一个叫做hospital.mat的matlab样例数据集,尝试为血压与特定年龄段(如下所示)创建一个箱线图。当我尝试创建箱线图时,收到了一个错误提示,说“矩阵维度必须一致”。我认为这可能是因为血压的数据同时测量了收缩压和舒张压(这是好的),或者是因为它正在收集所有年龄段患者的完整数据,而我只需要特定年龄范围内的血压数据。
hospital.Age的矩阵为100×1的双精度型,而hospital.BloodPressure的矩阵为100×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,:));

任何帮助都将是极好的!谢谢。


医院年龄矩阵为100 x 1双精度浮点数,医院血压矩阵为100 x 2双精度浮点数。 - Bazfred
1个回答

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


谢谢,我非常感激!你的工作很清晰,让我很容易理解! - Bazfred

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接