Как масштабировать каждый столбец разного размера, чтобы заполнить график в Stacked Barh?

Я хотел бы сделать визуально хороший сюжет с горизонтальной полосой с накоплением. Моя цель - заполнить область по горизонтали каждым баром. Если бы каждая сумма строк в матрице была бы равной, результат был бы хорошим, я бы хотел именно тот, у которого разные строки суммы-значения.

Я могу установить максимальное значение набора данных в xlim.

Но как я могу растянуть или масштабировать различные столбцы суммы-значения?

Значения столбцов в настоящее время находятся в столбцах, поэтому основное внимание уделяется визуальному виду.

Я был бы признателен за любую помощь, которую вы могли бы предоставить.

Вот пример набора данных для решения проблемы

t = [2 19 10 0;2 17 13 0;2 14 17 0;0 14 18 2;1 11 22 1;0 15 19 2;1 12 23 1;1 16 20 1;1 20 16 1];
barh(t,'stacked');

for i = 1 : 9
    num(i) = sum(t(i,:));
end
xlim = max(num);

set(gca,'XLim',[0 xlim]);

person aspit794    schedule 14.12.2014    source источник


Ответы (1)


Я не уверен, правильно ли я понимаю, но вы сказали Моя цель — заполнить область по горизонтали каждой полосой. Проверьте приведенный ниже код, возможно, это то, что вы имеете в виду:

t     = [2 19 10 0;2 17 13 0;2 14 17 0;0 14 18 2;1 11 22 1;0 15 19 2;1 12 23 1;1 16 20 1;1 20 16 1];
num   = sum(t, 2);
xlim  = max(num);
scale = xlim ./ num;
t_new = t .* ( scale * ones(1, 4) );
barh(t_new, 'stacked');
set(gca,'XLim',[0 xlim]);

Это результат: введите здесь описание изображения

person mehmet    schedule 14.12.2014
comment
Спасибо Мехмет!! Это именно то, что я хотел бы сделать! Идеальный - person aspit794; 14.12.2014