How to adjust the (absolute) width of bars to 1 unit in a bar plot?

5 次查看(过去 30 天)
How to adjust the (absolute) width of bars to 1 unit in a bar plot?
In the following example, the bars are larger than 1 unit:
clear all;clc;close all;
a=[2 6 15 63];
b=[23 4 2 1];
bar(a,b,'FaceColor',[0.5 0.5 0.5],'FaceAlpha',0.2)
xlim([0 Inf])
I mean, even though we set the relative bar width (bar(___,width)) equal to 1, we do not get 1 unit large columns. I guess because we are talking about the relative bar width and not about the absolute bar width.
bar(a,b,1,'FaceColor',[0.5 0.5 0.5],'FaceAlpha',0.2)
xlim([0 Inf])
For example, I would expect that the column centered at tick 2 spans between 1.5 and 2.5.
  6 个评论

请先登录,再进行评论。

采纳的回答

Dyuman Joshi
Dyuman Joshi 2023-11-1
"I would expect that the column centered at tick 2 spans between 1.5 and 2.5, i.e. 1 unit "
That will be quarter of the width available for a bar -
%Modified values to get a better visual
a=[2 6 15];
b=[23 4 2];
bar(a,b,0.25,'FaceColor',[0.5 0.5 0.5],'FaceAlpha',0.2)
xlim([0 Inf])
vec = [a-0.5;a;a+0.5];
%Adding ticks for visual verification
xticks(vec(:))
ax=gca;
ax.FontSize = 9;
ax.XTickLabelRotation = 90;
  4 个评论
Sim
Sim 2023-11-1
Thanks a lot @Dyuman Joshi for your comments! Yes, I would like to have a general solution..... I guess it would be the following one, right?
bar(a,b,1,'FaceColor',[0.5 0.5 0.5],'FaceAlpha',0.2)
xticks(unique(vec))

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Graphics Objects 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by