对于我的项目,我正在使用一个名为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,:));
任何帮助都会很棒!谢谢。
答案 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