How to make errorbar transparent?

How can I make a plot with discrete errorbar points which are transparent?

4 Comments

Adam Danz
Adam Danz on 24 Jul 2019
Edited: Adam Danz on 3 Sep 2020
The errorbar objects do not have an alpha property and they do not respond to adding an alpha value in the 4th position of the RGB color vector which is an undocumented feature in other graphics objects.
This answer by Tom Lane has 14 votes which suggests it has helped people in the past but it provides shaded error regions rather than error bars. Another FEX alternative here.
Thanks. I need it to work for discrete errorbars, so unfortunately that other solution won't help me.
Thanks though!
Here's an alternative that will take a little work. You could create a function that has the same inputs as errorbar(). In that function you can create vertical lines that span from the lower to upper error limits for each point. That you're dealing with line objects and you'll be able to control their alpha values by adding an alpha value to the 4th position of the RGB color value.
h = plot();
h.Color = [h.Color, 0.5]; % for 50% transparency
it works for plot, but not when you use it on the function errorbar()

Sign in to comment.

 Accepted Answer

Adam Danz
Adam Danz on 3 Sep 2020
Edited: Adam Danz on 3 Sep 2020
Unlike many line plots, the color property cannot be used to set transparency in errorbar().
Transparency can be set from within the hidden Bar and Line objects that represent the errorbars and trend line, respectively.
% Plot errorbars
cla
hold on
plot(rand(20),rand(20)*2-.5, 'yo', 'MarkerFaceColor', 'k', 'MarkerSize', 15, 'LineWidth', 1.5);
h = errorbar(linspace(0,1,5), linspace(0,1,5), .5*ones(1,5), 'r', 'LineWidth', 10);
% Set transparency level (0:1)
alpha = 0.65;
% Set transparency (undocumented)
set([h.Bar, h.Line], 'ColorType', 'truecoloralpha', 'ColorData', [h.Line.ColorData(1:3); 255*alpha])

2 Comments

David Saidman
David Saidman on 21 Apr 2021
Edited: David Saidman on 22 Apr 2021
This worked.
The end caps on the errorbar were still solid, but I was able to make them transparent with other undocumented properties in the errorbar object. In case someone else may be trying to do the same thing:
The hidden properties h.CapH and h.MarkerHandle can be adjusted the same way as h.Line and h.Bar as above, but use FaceColorData & FaceColorType and EdgeColorData & EdgeColorType properties in place of ColorData & ColorType (or can be set to 'visible','off').
Thanks for the addition, @David Saidman.
Unless there's something I'm missing, the FaceColor does not need changed for the caps. The transparency can be set in the EdgeColorData and EdgeColorType of the Cap handle.
set(h.Cap, 'EdgeColorType', 'truecoloralpha', 'EdgeColorData', [h.Cap.EdgeColorData(1:3); 255*alpha])

Sign in to comment.

More Answers (0)

Products

Release

R2017b

Asked:

on 24 Jul 2019

Edited:

on 22 Apr 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!