ErrorListPlot crops error bars

You can just Show plot with the option PlotRange -> All:

Show[plot, PlotRange -> All]

enter image description here

Why?

plot already contains full lines which you can see by looking at plot[[1]] which contains all the graphics directives and primitives:

Graphics[plot[[1]]]

enter image description here

Somehow, the FrontEnd thinks displaying the cropped version is in some sense better. You can always override the rendering choices of the FrontEnd using Show with appropriate options.


Here is my solution. Calculate the value of each data point plus (and minus) it's error bar. Then you can calculate the location of the highest (and lowest) error bar. Then use this to specify the PlotRange.

data = Table[{{x, Cos[x]}, ErrorBar[Cos[x]^2]}, {x, 0, 2 Pi}];
minima = #[[1]][[2]] - #[[2]][[1]] & /@ data;
maxima = #[[1]][[2]] + #[[2]][[1]] & /@ data;
plot = ErrorListPlot[data, PlotRange -> {Min[minima], Max[maxima]}, PlotRangePadding -> Scaled[.05]]

ErrorListPlot generated by the above code

We can make a nice little function that we can use in a similar way to ErrorListPlot but takes care of the PlotRange automatically as we desired. The difference here is that other optional arguments have to be grouped together into a list. I'm sure there's a nicer way to do this with optional arguments, but I don't know how to implement it.

errorListPlot[data_, opts_] := Module[{minima, maxima},
  minima = #[[1]][[2]] - #[[2]][[1]] & /@ data;
  maxima = #[[1]][[2]] + #[[2]][[1]] & /@ data;
  ErrorListPlot[data, PlotRange -> {Min[minima], Max[maxima]}, opts]
  ]

data = Table[{{x, Cos[x]}, ErrorBar[Cos[x]^2]}, {x, 0, 2 Pi}];
errorListPlot[data, {PlotRangePadding -> Scaled[.05], PlotStyle -> Red}]

ErrorListPlot generated with custom 'errorListPlot' Module defined above

Tags:

Plotting