How to draw a line in a bar chart in complete x area
2 views (last 30 days)
Show older comments
Is there a way to make the horizontal line start from the very left and go to the very right? It's only going from the first x-marker to the last x-marker.
my code:
cat=categorical({'a','b','c'})
data = [37.6 24.5 14.6]';
errhigh = [2.1 4.4 0.4];
errlow = [4.4 2.4 2.3];
bar(cat,data)
hold on
er = errorbar(cat,data,errlow,errhigh);
er.Color = [0 0 0];
er.LineStyle = 'none';
hold off
line(xlim,[20 20])
output diagramm:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1656121/image.jpeg)
Thanks.
0 Comments
Answers (2)
Voss
on 31 Mar 2024
cats=categorical({'a','b','c'})
data = [37.6 24.5 14.6]';
errhigh = [2.1 4.4 0.4];
errlow = [4.4 2.4 2.3];
bar(cats,data)
hold on
er = errorbar(cats,data,errlow,errhigh);
er.Color = [0 0 0];
er.LineStyle = 'none';
hold off
% force graphics to update so XLim is accurate
drawnow()
% prevent auto-updating of XLim when new line is made
set(gca(),'XLimMode','manual')
% make the new line
line([0 numel(cats)+1],[20 20])
I changed the variable cat to cats, since cat is the name of an important built-in function.
2 Comments
Star Strider
on 31 Mar 2024
cat=categorical({'a','b','c'})
data = [37.6 24.5 14.6]';
errhigh = [2.1 4.4 0.4];
errlow = [4.4 2.4 2.3];
bar(cat,data)
hold on
er = errorbar(cat,data,errlow,errhigh);
er.Color = [0 0 0];
er.LineStyle = 'none';
hold off
yline(20) % Use 'yline'
The Run feature is not working for some reason just now, ot it woudl be possible to demonstrate this here.
.
2 Comments
Star Strider
on 31 Mar 2024
My pleasure!
You can do something like this —
cat=categorical({'a','b','c'})
data = [37.6 24.5 14.6]';
errhigh = [2.1 4.4 0.4];
errlow = [4.4 2.4 2.3];
bar(cat,data)
hold on
er = errorbar(cat,data,errlow,errhigh);
er.Color = [0 0 0];
er.LineStyle = 'none';
% plot([0 1], [1 1]*20) % Added
plot([0 1; 2 3; 4 5].', ones(3,2).'*20) % All-In-One
hold off
however the placement requires a bit of experimentation, since numeric values of the ‘x’ axis aren’t precisely defined here. (The return from an xlim call is [a c] for example.) If you want them all on the same y-value, you can combine them as in the ‘All-In-One’ plot call, otherwise, it might be easier to use separate plot calls, similar to the commented-out version.
.
See Also
Categories
Find more on Discrete Data Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!