Saltar al contenido

¿Cómo puedo trazar un gráfico de barras apiladas de una barra en MATLAB?

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):
ejemplo

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{:};
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *