Matlab中的多个垂直直方图

时间:2018-11-01 17:10:17

标签: matlab matlab-figure

是否可以在Matlab中将多个垂直直方图绘制成一个图?就像封闭的Excel工作表(https://drive.google.com/file/d/1H_mbyrIoln3XrnK1hLajnVNBKn13y_np/view?usp=sharing

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

这甚至可能吗?我必须为Matlab设置一些条件才能知道在哪里绘图,但是有人可以向我展示基本方法吗?

非常感谢您的帮助!

enter image description here

1 个答案:

答案 0 :(得分:2)

问题是Baseline对象的父对象是Axis,这使我们无法做类似的事情

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

因为这些图将自动共享第二个基线值集。可能有一个我不知道的解决方法,因此我邀请知道它的任何人向我展示它的完成方式。

就目前而言,我能够以一种不太优雅的方式对您发布图片的情节进行排序。我将在下面发布代码,但在此之前,我想反对使用这种绘图。为什么?因为我认为这很令人困惑,因为x轴既与图号又与仓位数有关。实际上,您正在尝试显示3-D数据集,这三个维度分别是箱,箱计数和“直方图编号”。存在大量的用于显示3D数据的方法,并且一系列2D直方图可能不是最好的方法。

话虽如此,这是一个代码,它或多或少地像上面那样创建了上面的图片。您可能要进行的任何更改都会比平常麻烦:-)

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;

结果:

Result