停止错误栏在 matlab 中重叠
Stop errorbars from overlapping in matlab
我有多组数据需要展示标准偏差 - 我一直在使用误差线。但是,当我在同一个图上绘制多个集合时,一些误差线会重叠。
有没有一种简单的方法可以使某个刻度值的误差线稍微偏移,这样很明显它们属于那个刻度标记,但又不重叠,所以它们的点差很清楚?我已经看到用条形图回答和执行的类似问题,但很难将其扩展到错误栏。
谢谢!
示例图片,误差线重叠:
1
用于生成图像的代码:
val1 = [818.23,819.12,820.73,821.93,819.21];
val2 = [840.04,839.77,841.20,842.54,841.50];
val1std = [14.81,5.17,14.08,20.24,11.95];
val2std = [14.81,5.17,14.08,20.24,11.95];
figure
set(gca,'fontsize',18)
hold on
errorbar(val1,val1std,'ok','linewidth',2,'MarkerSize',6','MarkerFaceColor','k')
errorbar(val2,val2std,'xk','linewidth',2,'MarkerSize',6','MarkerFaceColor','k')
xlabel('Some property (unit)','fontsize',18,'interpreter','latex')
ylabel('Another property (unit)','fontsize',18,'interpreter','latex')
set(gca,'XTickLabel',{'','0.10','0.08','0.06','0.04','0.02',''})
set(get(gca, 'yLabel'), 'Rotation',90);
set(gca,'TickLabelInterpreter','latex')
xlim([0 6])
ylim([800 900])
set(gca, ...
'box', 'on',...
'tickdir', 'in',...
'ticklength',[.02 .02],...
'linewidth',1,...
'ygrid','off')
set(gcf,'paperpositionmode','auto','Color',[1,1,1])
h=legend({'data1','data2'})
set(h,'Interpreter','latex')
指定 x
输入到 errorbar
并手动添加一点偏移量。您可以按如下方式进行。修改的行用注释表示。
val1 = [818.23,819.12,820.73,821.93,819.21];
val2 = [840.04,839.77,841.20,842.54,841.50];
val1std = [14.81,5.17,14.08,20.24,11.95];
val2std = [14.81,5.17,14.08,20.24,11.95];
figure
set(gca,'fontsize',18)
hold on
delta = .07; % Adjust manually
errorbar((1:numel(val1))-delta, val1,val1std,'ok','linewidth',2,'MarkerSize',6',...
'MarkerFaceColor','k') % Add X input
errorbar((1:numel(val2))+delta,val2,val2std,'xk','linewidth',2,'MarkerSize',6',...
'MarkerFaceColor','k') % Add X input
xlabel('Some property (unit)','fontsize',18,'interpreter','latex')
ylabel('Another property (unit)','fontsize',18,'interpreter','latex')
set(gca,'XTickLabel',{'','0.10','0.08','0.06','0.04','0.02',''})
set(get(gca, 'yLabel'), 'Rotation',90);
set(gca,'TickLabelInterpreter','latex')
xlim([0 6])
ylim([800 900])
set(gca, ...
'box', 'on',...
'tickdir', 'in',...
'ticklength',[.02 .02],...
'linewidth',1,...
'ygrid','off')
set(gcf,'paperpositionmode','auto','Color',[1,1,1])
h=legend({'data1','data2'})
set(h,'Interpreter','latex')
这样得到下图
我有多组数据需要展示标准偏差 - 我一直在使用误差线。但是,当我在同一个图上绘制多个集合时,一些误差线会重叠。
有没有一种简单的方法可以使某个刻度值的误差线稍微偏移,这样很明显它们属于那个刻度标记,但又不重叠,所以它们的点差很清楚?我已经看到用条形图回答和执行的类似问题,但很难将其扩展到错误栏。
谢谢!
示例图片,误差线重叠: 1
用于生成图像的代码:
val1 = [818.23,819.12,820.73,821.93,819.21];
val2 = [840.04,839.77,841.20,842.54,841.50];
val1std = [14.81,5.17,14.08,20.24,11.95];
val2std = [14.81,5.17,14.08,20.24,11.95];
figure
set(gca,'fontsize',18)
hold on
errorbar(val1,val1std,'ok','linewidth',2,'MarkerSize',6','MarkerFaceColor','k')
errorbar(val2,val2std,'xk','linewidth',2,'MarkerSize',6','MarkerFaceColor','k')
xlabel('Some property (unit)','fontsize',18,'interpreter','latex')
ylabel('Another property (unit)','fontsize',18,'interpreter','latex')
set(gca,'XTickLabel',{'','0.10','0.08','0.06','0.04','0.02',''})
set(get(gca, 'yLabel'), 'Rotation',90);
set(gca,'TickLabelInterpreter','latex')
xlim([0 6])
ylim([800 900])
set(gca, ...
'box', 'on',...
'tickdir', 'in',...
'ticklength',[.02 .02],...
'linewidth',1,...
'ygrid','off')
set(gcf,'paperpositionmode','auto','Color',[1,1,1])
h=legend({'data1','data2'})
set(h,'Interpreter','latex')
指定 x
输入到 errorbar
并手动添加一点偏移量。您可以按如下方式进行。修改的行用注释表示。
val1 = [818.23,819.12,820.73,821.93,819.21];
val2 = [840.04,839.77,841.20,842.54,841.50];
val1std = [14.81,5.17,14.08,20.24,11.95];
val2std = [14.81,5.17,14.08,20.24,11.95];
figure
set(gca,'fontsize',18)
hold on
delta = .07; % Adjust manually
errorbar((1:numel(val1))-delta, val1,val1std,'ok','linewidth',2,'MarkerSize',6',...
'MarkerFaceColor','k') % Add X input
errorbar((1:numel(val2))+delta,val2,val2std,'xk','linewidth',2,'MarkerSize',6',...
'MarkerFaceColor','k') % Add X input
xlabel('Some property (unit)','fontsize',18,'interpreter','latex')
ylabel('Another property (unit)','fontsize',18,'interpreter','latex')
set(gca,'XTickLabel',{'','0.10','0.08','0.06','0.04','0.02',''})
set(get(gca, 'yLabel'), 'Rotation',90);
set(gca,'TickLabelInterpreter','latex')
xlim([0 6])
ylim([800 900])
set(gca, ...
'box', 'on',...
'tickdir', 'in',...
'ticklength',[.02 .02],...
'linewidth',1,...
'ygrid','off')
set(gcf,'paperpositionmode','auto','Color',[1,1,1])
h=legend({'data1','data2'})
set(h,'Interpreter','latex')
这样得到下图