将误差线添加到 MatLab 中的分组条形图
Add error bars to grouped bar plot in MatLab
我有一个简单的分组条形图。我也在尝试绘制误差线,但我似乎无法弄清楚。
我不太擅长 for 循环,但我不知道这是否是唯一的解决方案,或者我是否可以添加另一行代码来绘制误差线。
这是我的代码和图表:
% Plot raw data
y = [316.45 292.14 319.96; 305.59 287.99 295.21] % first 3 #s are pre-test, second 3 #s are post-test
err = [13.12 5.67 12.36; 12.43 6.83 11.67]
box on
bar(y)
set(gca,'xticklabel',{'Pre-test'; 'Post-test'})
ylim([200 360])
ylabel('RT (ms)')
xlabel('Session')
这是一个使用标准 errorbar
和 bar
函数的解决方案。 bar
在相同的 x
位置绘制每个组,并使用 Xoffset
属性 移动组中的条。您可以使用 x
位置和 Xoffset
来绘制误差线。
% Data
y = [316.45 292.14 319.96; 305.59 287.99 295.21] % first 3 #s are pre-test, second 3 #s are post-test
err = [13.12 5.67 12.36; 12.43 6.83 11.67]
% Plot
figure(1); clf;
hb = bar(y); % get the bar handles
hold on;
for k = 1:size(y,2)
% get x positions per group
xpos = hb(k).XData + hb(k).XOffset;
% draw errorbar
errorbar(xpos, y(:,k), err(:,k), 'LineStyle', 'none', ...
'Color', 'k', 'LineWidth', 1);
end
% Set Axis properties
set(gca,'xticklabel',{'Pre-test'; 'Post-test'});
ylim([200 360])
ylabel('RT (ms)')
xlabel('Session')
我有一个简单的分组条形图。我也在尝试绘制误差线,但我似乎无法弄清楚。
我不太擅长 for 循环,但我不知道这是否是唯一的解决方案,或者我是否可以添加另一行代码来绘制误差线。
这是我的代码和图表:
% Plot raw data
y = [316.45 292.14 319.96; 305.59 287.99 295.21] % first 3 #s are pre-test, second 3 #s are post-test
err = [13.12 5.67 12.36; 12.43 6.83 11.67]
box on
bar(y)
set(gca,'xticklabel',{'Pre-test'; 'Post-test'})
ylim([200 360])
ylabel('RT (ms)')
xlabel('Session')
这是一个使用标准 errorbar
和 bar
函数的解决方案。 bar
在相同的 x
位置绘制每个组,并使用 Xoffset
属性 移动组中的条。您可以使用 x
位置和 Xoffset
来绘制误差线。
% Data
y = [316.45 292.14 319.96; 305.59 287.99 295.21] % first 3 #s are pre-test, second 3 #s are post-test
err = [13.12 5.67 12.36; 12.43 6.83 11.67]
% Plot
figure(1); clf;
hb = bar(y); % get the bar handles
hold on;
for k = 1:size(y,2)
% get x positions per group
xpos = hb(k).XData + hb(k).XOffset;
% draw errorbar
errorbar(xpos, y(:,k), err(:,k), 'LineStyle', 'none', ...
'Color', 'k', 'LineWidth', 1);
end
% Set Axis properties
set(gca,'xticklabel',{'Pre-test'; 'Post-test'});
ylim([200 360])
ylabel('RT (ms)')
xlabel('Session')