如何在MATLAB中调整棒的绝对宽度

如何在MATLAB中调整棒的绝对宽度,matlab,data-visualization,matlab-figure,Matlab,Data Visualization,Matlab Figure,我对MATLAB中带调整的条形图感到困惑,例如,当使用条形图时: bar(randsample(0:0.0001:1,100),randn(100,1)) 我得到的图像如下: 酒吧似乎太薄了,看不清楚。搜索帮助后,我可以使用以下代码: bar(randsample(0:0.0001:1,100),randn(100,1),50) 我明白了: 看起来好多了。但是如果我将示例编号从100更改为10,相同的代码将不起作用 bar(randsample(0:0.0001:1,10),randn(

我对MATLAB中带调整的条形图感到困惑,例如,当使用条形图时:

bar(randsample(0:0.0001:1,100),randn(100,1))
我得到的图像如下:

酒吧似乎太薄了,看不清楚。搜索帮助后,我可以使用以下代码:

bar(randsample(0:0.0001:1,100),randn(100,1),50)
我明白了:

看起来好多了。但是如果我将示例编号从100更改为10,相同的代码将不起作用

bar(randsample(0:0.0001:1,10),randn(10,1),50)

我希望我已经清楚地解释了我的问题。bar函数的第三个参数似乎是相对宽度,它与第一个和第二个参数的输入大小相关。无论输入多少数据点,我都可以固定绝对条宽吗?或者有更好的函数来绘制这样的图形?非常感谢你的帮助

来自:

条(\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,宽度)
设置相对条宽,控制 在一个组内条的分离。将
width
指定为标量值。 将此选项与中的任何输入参数组合一起使用 以前的语法

提供的示例如下:

将每个条的宽度设置为总可用空间的40% 每个酒吧

y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
bar(y,0.4)

所以底线是:宽度被指定为每个条的总可用空间的百分比。Yoru的问题来自这样一个事实:你有太多的酒吧,所以每个酒吧的可用空间很小。将宽度设置为可用空间的50%或5000%,只意味着每个钢筋将在相邻钢筋上大量重叠。因为你有这么多,中间的图看起来“合理”,因为我怀疑很多条是重叠的,很多条是零,所以你看不到它们。如上一个示例所示,如果将宽度设置为5000%,则发现将宽度设置为5000%看起来很可笑


因此,总结一下:减少条数,并将条宽指定在>0和1之间(1表示没有间隙,所有条相互接触)。

user@am304关于
宽度的参数是正确的

代码中发生的情况是将
x
值设置为
randsample(0:0.0001:1,10)

如果将绘图的宽度设为1,则表示相邻的两条条形将以等间距的
x
相互接触

在您的例子中,您有一个不规则的
x
间距。 条的宽度由两个
x
值(从
randsample()
获得)之间的最小距离决定。有时候这个空间——因此你的酒吧的宽度——非常小。有时它的范围更广

将with更改为
1
,并进行多个绘图。你会注意到,两个物体总是相互接触,没有一个重叠,其他物体之间都有空格。如果将宽度更改为
50
,绘图有时会严重重叠(取决于
randsample
的随机性),因为您的条形图比两个x值之间的最小宽度大50倍


对于您的
randsample(0:0.0001:1100)
示例,两个值更可能彼此接近,因此增加宽度有助于您看到一些东西(因为条形图重叠)。

使用随机x位置绘制东西的更好方法是使用。默认情况下,它从零线到基准面绘制一条线,用一个圆表示每个基准面。但这是可以修改的。例如:

stem(randsample(0:0.0001:1,100),randn(100,1), 'Marker','none', 'LineWidth',4)

创建与第二次尝试类似的绘图,但带有固定宽度(4点)的条形图。

感谢您的快速帮助!我尝试过“宽度”参数,它在我问题的第二个示例中运行良好。但当输入数据大小改变(从100变为10)时,相同的“宽度”比例似乎太大了。在我的项目中,我无法手动调整“宽度”,因此无论我输入多少个数据点,我都想固定条的宽度。您的答案非常有用。条形函数中的“宽度”参数相对于输入数组中元素之间的最小距离x.SAMPLE_NUM=4;钢筋宽度=0.005;x=随机样本(0:0.00001:1,样本数量);y=随机数(样本数,1);x_排序=排序(x);minDis=min(x_排序(2:end)-x_排序(1:end-1));scaleRatio=条形宽度/minDis;棒(x,y,刻度);xlim([0,1]);此脚本可以生成由bar_width设置的特定宽度的条形图,无论SAMPLE_NUM如何更改