Проблема в том, что родителем объекта Baseline
является Axis
, что не позволяет нам делать что-то вроде
barh(bins1,counts1,'Basevalue',baseline1); hold on;
barh(bins2,counts2,'Basevalue',baseline2); hold off;
потому что графики автоматически будут использовать второй набор базовых значений. Для этого может быть обходной путь, о котором я не знаю, поэтому я приглашаю любого, кто его знает, показать мне, как это делается.
На данный момент я смог воспроизвести сюжет, на котором вы разместили фотографию, гораздо менее изящным способом. Я опубликую код ниже, но прежде чем я сделаю это, я бы хотел поспорить против использования такого сюжета. Зачем? Потому что я думаю, что это сбивает с толку, так как ось X относится как к номеру графика, так и к числу счетчиков. Вы на самом деле пытаетесь отобразить трехмерный набор данных, тремя измерениями которого являются бины, количество бинов и «номер гистограммы». Существует множество методов для отображения трехмерных данных, и серия двумерных гистограмм может оказаться не лучшим способом.
При этом, вот код, который более или менее создает картинку выше, как и было обещано. Любые изменения, которые вы можете захотеть сделать, будут более громоздкими, чем обычно: -)
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;
Результат: