Solución:
(Esta solución requiere MATLAB 2019b)
Citando la documentación:
bar (y) crea un gráfico de barras con una barra para cada elemento en y. Si y es una matriz m-por-n, entonces bar crea m grupos de n barras.
bar (x, y) dibuja las barras en las ubicaciones especificadas por x.
Usando la primera sintaxis, cada elemento de un vector se convertirá en su propia barra. Usando la segunda sintaxis, x define cómo entender un vector. En su caso, desea un solo grupo apilado:
bar(1,[1 2 3 4 5], 'stacked')
Para comparar, con Y=rand(1,5)
:
Solución hacky:
bar([1 2 3 4 5;0 0 0 0 0], 'stacked')
set(gca,'xlim',[0.25 1.75])
La respuesta de Daniel es el camino a seguir, pero solo funciona en versiones recientes de Matlab, a partir de R2019b.
La solución hacky de Ander funciona creando una segunda barra invisible. Esto tiene efectos secundarios; por ejemplo axis auto
extenderá los ejes.
El siguiente es un enfoque aún más hacker que evita esos problemas. Crea las dos barras y luego elimina la segunda alterando los datos de los objetos gráficos:
values = [1 2 3 4 5];
h = bar([values(:).'; NaN(1, numel(values))], 'stacked');
XData = vertcat(h.XData);
XData = num2cell(XData(:,1));
[h.XData] = XData{:};
YData = vertcat(h.YData);
YData = num2cell(YData(:,1));
[h.YData] = YData{:};