在matlab中绘制多个垂直直方图

Multiple vertical histograms plot in matlab

能否将Matlab中的多个垂直直方图合二为一?很像封闭的 excel sheet ( https://drive.google.com/file/d/1H_mbyrIoln3XrnK1hLajnVNBKn13y_np/view?usp=sharing )

我想通过导入 excel 文件,将许多垂直直方图绘制成一张图,其中 y 轴上有高程,x 轴是直方图垂直线之间的距离直方图条的长度是 excel sheet 中的值。每个条形的垂直高度为 5。

这可能吗?我必须输入一些条件让 Matlab 知道在哪里绘图,但是有人可以告诉我基本的方法吗?

非常感谢您的帮助!

问题是 Baseline 对象的父对象是 Axis,这会阻止我们做类似

的事情
barh(bins1,counts1,'Basevalue',baseline1); hold on;
barh(bins2,counts2,'Basevalue',baseline2); hold off;

因为绘图将自动共享第二个基线值集。可能有我不知道的解决方法,所以我邀请任何知道它的人告诉我它是如何完成的。

目前,我能够以一种不太优雅的方式复制您 post 拍摄的情节。我将在下面 post 编写代码,但在此之前,我想反对使用这样的情节。为什么?因为我认为这令人困惑,因为 x 轴既与地块编号相关,也与 bin 计数编号相关。实际上,您正在尝试显示 3-D 数据集,三个维度是 bin、bin 计数和 'histogram number'。显示 3-D 数据的方法过多,一系列 2-D 直方图可能不是最好的方法。

也就是说,这里有一个代码,或多或少地创建了上面的图片,正如所承诺的那样。您可能想要进行的任何更改都会比平时更麻烦:-)

testData = randn(10000,1);      % Generate some data
[counts,bins] = hist(testData); % Bin the data

% First histogram
baseline1 = 0;
p1=subplot(1,3,1); barh(bins,counts,'BaseValue',baseline1); 
xticks(baseline1); xticklabels({0}); % Graph number on x axis at baseline (0)
box off;          % Remove box on right side of plot
ylabel('Property');

% Second histogram
baseline2 = max(counts)*1.2;
sepdist = baseline2-baseline1;      % Distance that separates two baselines
counts2 = baseline2 + counts;
p2=subplot(1,3,2); barh(bins,counts2,'BaseValue',baseline2)
xticks(baseline2); xticklabels({1}); % Graph number on x axis at baseline
box off;
Y=gca; Y.YAxis.Visible='off';
p1p=p1.Position; p2p=p2.Position;
p2p(1)=p1p(1)+p1p(3); p2.Position=p2p; % Move subplot so they touch

% Third histogram
baseline3 = baseline2 + sepdist;
counts3 = baseline3+counts;
p3=subplot(1,3,3); barh(bins,counts3,'BaseValue',baseline3)
xticks(baseline3); xticklabels({2});
Y=gca; Y.YAxis.Visible='off';
box off
p3p=p3.Position;
p3p(1)=p2p(1)+p2p(3); p3.Position=p3p;

% Add x-label when you are done:
xl=xlabel('Test xlabel'); xl.Units='normalized';

% Fiddle around with xl.Position(1) until you find a good centering:
xl.Position(1) = -0.49;

结果: