【问题标题】:barplot bars in specified interval width指定间隔宽度的条形图条
【发布时间】:2013-11-13 23:10:47
【问题描述】:

我想创建一个具有指定宽度的条形图。我已经尝试了很多,但到目前为止没有什么对我有用。

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);

【问题讨论】:

    标签: matlab bar-chart


    【解决方案1】:

    您可以使用patch 来自己绘制每个条形图。我们可以将inter(k) 用于左侧,inter(k + 1) 用于每个条的右侧边缘k,我们已经知道的高度是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