Как сгенерировать сложенную гистограмму из матриц разного размера? - PullRequest
0 голосов
/ 10 марта 2020

У меня есть две матрицы с разным размером, одна 3000 x 1 другая 6000 x 1. Я хочу построить гистограмму с накоплением из этих матриц. Вот код, который я пробовал до сих пор:

hist(S1,20);
hold on
hist(S,20)
h = findobj(gca,'Type','patch');
display(h) 
set(h(1),'FaceColor',[0 0 0],'EdgeColor',[1 1 1],'facealpha',1.0);
set(h(2),'FaceColor',[1 1 1],'EdgeColor',[0 0 0],'facealpha',.3);

В конце график будет выглядеть так, как будто он не сложен:

image

1 Ответ

3 голосов
/ 10 марта 2020
Метод

MATLAB bar имеет опцию 'stacked'. Это не имеет значения, если ваши массивы имеют разные размеры или разные диапазоны значений, если создаваемые вами гистограммы имеют одинаковые значения x. Этого можно добиться, правильно установив параметр xbins.

Вот небольшой пример:

S1 = randi([-8 8], 30, 1);
S2 = randi([-10 10], 60, 1);

hist_range = -10:10;

h1 = hist(S1, hist_range)
h2 = hist(S2, hist_range)

figure(1);
bar(hist_range, [h1(:), h2(:)], 'stacked')
xlim([-11 11]);
legend('h1', 'h2');

Примерный вывод (Octave 5.1.0, код также проверен с MATLAB Online):

h1 =
   0   0   2   2   3   1   1   0   3   1   3   2   2   0   1   2   3   1   3   0   0

h2 =
   2   2   2   0   4   5   0   2   3   2   5   3   0   6   3   6   2   5   1   5   2

Output

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...