Когда я ввожу ваш первый пример с матрицей 1x8:
test = [1 2 3 4 5 1 2 3];
bar([test; nan(size(test))],'stacked');
Я вижу тот же сюжет, что и вы. Затем я транспонирую test
, чтобы получить матрицу 8x1:
test = test.';
bar([test; nan(size(test))],'stacked');
и я вижу нечто похожее на ваш второй сюжет:
Обратите внимание, как из-за NaN правая половина оси X не имеет столбцов.
Таким образом, чтобы получить стекированные столбцы, вам нужно иметь вектор-строку . Однако ваши данные представляют собой вектор столбцов, матрицу 4400x1. data = data.'
изменит это.
Тем не менее, вполне вероятно, что MATLAB не сможет создать столбчатую диаграмму с накоплением из 4400 элементов. Я пробую это на MATLAB Online, и я ждал несколько минут и до сих пор не знаю сюжета. В любом случае, вы не станете мудрее с таким сюжетом. Не делай этого!
По поводу вашего второго вопроса: вы можете изменить порядок цветов графика на gray
:
set(gca,'colororder',flipud(gray(256)))
Однако столбцы с накоплением не окрашены в соответствии с их значением, они просто по очереди используют цвета списка.
Лучшим решением было бы представить данные в виде изображения:
test = [1 2 3 4 5 1 2 3];
imagesc(test.')
colormap(flipud(gray(255)))
set(gca,'xlim',[0,2],'xtick',1)
[Я только что понял, что вы можете выпрямить ось Y, imagesc
инвертирует ее. Просто: set(gca,'ydir','normal')
.]