指定间隔宽度的条形图条形。

3

我想创建一个具有指定宽度的条形图。我尝试了很多方法,但目前为止还没有成功。

x 的每个元素都是一个区间的中心。我希望每个条形的中心位于该位置,并且该条形的宽度应对应于该区间的长度。y 包含每个条形的高度。我的目标是获得具有不同宽度的条形图。

% inter contains the limits of my intervals
inter = [-32.6;-31.3;-20.3;-19.0;-15.4;-14.1;-11.7;-10.4;-8.8];

x = [ -31.6000; -19.8000; -17.4000; -13.1500; -10.5000; -8.8000];
y = [  2.3529; 1.0417; 1.3158; 1.5337; 2.5000; 1.0152];

% trying to create the bar plot, however, all widths are the same:
bar(x,y);
1个回答

3

你可以使用patch来绘制每个条形图。我们可以使用 inter(k)表示第k个条的左边界,使用inter(k + 1)表示右边界,而高度y(k)已经确定。

figure;
for k = 1 : length(y)
    xl = inter(k);
    xr = inter(k + 1);
    patch([xr, xr, xl, xl], [0, y(k), y(k) 0], 'b');
end

原来,您甚至不需要向量x

+1 你也可以将 patch 一行替换为 bar((xl+xr)/2,y(k),xr-xl),在 figure 后添加 hold on - Luis Mendo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接