Как мне сложить переменную массива и построить три из этих переменных массива на барх? - PullRequest
0 голосов
/ 09 апреля 2020
% S
a1 = [2015/07/23 2015/11/25 2016/01/20];
b1 = [2011/06/22 2014/10/14 2015/03/01];
c1 = [2012/04/16 2013/06/23 2015/04/08];
d1 = [2013/09/15 2014/01/19 2016/09/13];
e1 = [2015/04/01 2016/04/04 2018/08/04];

% H
a2 = [2012/07/23 2015/06/25 2016/05/20];
b2 = [2009/06/22 2014/09/14 2015/11/01];
c2 = [2006/04/16 2013/12/23 2015/06/08];
d2 = [2008/09/15 2014/05/19 2016/02/13];
e2 = [2011/04/01 2016/05/04 2018/03/04];

% HS
a3 = [2009/07/23 2010/06/25 2018/02/20];
b3 = [2011/06/22 2014/07/14 2016/09/01];
c3 = [2013/04/16 2016/09/23 2019/05/08];
d3 = [2013/09/15 2018/05/19 2019/06/13];
e3 = [2014/04/01 2019/01/04 2019/12/04];

% T
t = [1 2 3 4 5];

dates = [a1 a2 a3; b1 b2 b3; c1 c2 c3; d1 d2 d3; e1 e2 e3];

% Plotted
figure
barh(t, dates, 'hist')

title('Script')
xlabel('Time')
ylabel('Tail')
legend({'S','H','HS'})
legend('Location', 'southoutside')
legend('Orientation','horizontal')

Если вы построите график, вы заметите, что с каждым 't' связаны 9 гистограмм. Там должно быть только три, как указано в переменной «даты» на т. Как мне сложить 'a1, a2, a3, затем b1, b2, b3 ...... и e1, e2, e3 каждый по отдельности' для выполнения sh этого умения?

Мой результат сценария:

REALITY

Как я хочу, чтобы вывод выглядел как

Fantasy

Note: 1. The y axis contains the 5 different elements 't'
      2. The x axis should contain the date elements 'dates'
      3. When you plot these values, there are 9 bars. There should be three per 
      't'.
      4. On the x axis, I would like to have the dates represented.
      5. I would like to eventually be able to create a user prompted system that 
      allows people to enter in dates for a corresponding array, and have that 
      date be stacked onto the chart.

Следующий фрагмент кода выполняет то, что я запрашиваю, но с полосами, расположенными вертикально, а не горизонтально, а также принимает различные пользовательские данные.

https://www.mathworks.com/matlabcentral/fileexchange/32884-plot-groups-of-stacked-bars

1 Ответ

0 голосов
/ 10 апреля 2020

Вы очень близки к решению. Загрузите этот файл из обмена файлами MATLAB, откройте его, замените bar на barh, у вас есть собственный горизонтальный столбчатый график.

Ваш ввод не соответствует ожидаемому формату, функция ожидает трехмерную матрицу , Незначительные изменения в вашем коде:

dates = [cat(3,a1,a2,a3);cat(3,b1,b2,b3); cat(3,c1,c2,c3); cat(3,d1,d2,d3); cat(3,e1,e2,e3)];
plotBarHStackGroups(dates,t)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...