Main Content

subplot

Crear ejes en posiciones segmentadas

Descripción

ejemplo

Nota

Se recomienda usar tiledlayout en lugar de subplot porque permite crear capas con espaciado ajustable entre los mosaicos, mosaicos que se pueden reordenar en función del tamaño de la figura y barras de colores y leyendas mejor ubicadas. (desde R2019b)

subplot(m,n,p) divide la figura actual en una cuadrícula de m por n y crea ejes en la posición que especifica p. MATLAB® numera las posiciones de subgráfica por fila. La primera subgráfica es la primera columna de la primera fila, la segunda subgráfica es la segunda columna de la primera fila y así sucesivamente. Si hay ejes en la posición especificada, este comando convierte los ejes en los ejes actuales.

ejemplo

subplot(m,n,p,'replace') elimina los ejes existentes en la posición p y crea ejes nuevos.

subplot(m,n,p,'align') crea ejes nuevos, para que los cuadros de la gráfica queden alineados. Esta opción es el comportamiento predeterminado.

ejemplo

subplot(m,n,p,ax) convierte los ejes existentes, ax, en una subgráfica en la misma figura.

ejemplo

subplot('Position',pos) crea ejes en la posición personalizada que especifica pos. Utilice esta opción para posicionar una subgráfica que no se alinea con las posiciones de la cuadrícula. Especifique pos como vector de cuatro elementos con el formato [left bottom width height]. Si los ejes nuevos se solapan con los ejes existentes, los nuevos sustituyen a los existentes.

subplot(___,Name,Value) modifica las propiedades de los ejes utilizando uno o más argumentos de par nombre-valor. Establezca las propiedades de los ejes después de todos los demás argumentos de entrada.

ejemplo

ax = subplot(___) crea un objeto Axes, un objeto PolarAxes o un objeto GeographicAxes. Utilice ax para realizar futuras modificaciones en los ejes.

ejemplo

subplot(ax) convierte los ejes que especifica ax en los ejes actuales de la figura principal. Esta opción no convierte la figura principal en la figura actual si no lo es ya.

Ejemplos

contraer todo

Cree una figura con dos subgráficas apiladas. Represente una onda sinusoidal en cada una de ellas.

subplot(2,1,1);
x = linspace(0,10);
y1 = sin(x);
plot(x,y1)

subplot(2,1,2); 
y2 = sin(5*x);
plot(x,y2)

Figure contains 2 axes objects. Axes object 1 contains an object of type line. Axes object 2 contains an object of type line.

Cree una figura dividida en cuatro subgráficas. Represente una onda sinusoidal en cada una de ellas y titúlelas.

subplot(2,2,1)
x = linspace(0,10);
y1 = sin(x);
plot(x,y1)
title('Subplot 1: sin(x)')

subplot(2,2,2)
y2 = sin(2*x);
plot(x,y2)
title('Subplot 2: sin(2x)')

subplot(2,2,3)
y3 = sin(4*x);
plot(x,y3)
title('Subplot 3: sin(4x)')

subplot(2,2,4)
y4 = sin(8*x);
plot(x,y4)
title('Subplot 4: sin(8x)')

Figure contains 4 axes objects. Axes object 1 with title Subplot 1: sin(x) contains an object of type line. Axes object 2 with title Subplot 2: sin(2x) contains an object of type line. Axes object 3 with title Subplot 3: sin(4x) contains an object of type line. Axes object 4 with title Subplot 4: sin(8x) contains an object of type line.

Cree una figura que contenga tres subgráficas. Cree dos subgráficas en la mitad superior de la figura y una tercera subgráfica que abarque la mitad inferior de la figura. Añada un título a cada subgráfica.

subplot(2,2,1);
x = linspace(-3.8,3.8);
y_cos = cos(x);
plot(x,y_cos);
title('Subplot 1: Cosine')

subplot(2,2,2);
y_poly = 1 - x.^2./2 + x.^4./24;
plot(x,y_poly,'g');
title('Subplot 2: Polynomial')

subplot(2,2,[3,4]);
plot(x,y_cos,'b',x,y_poly,'g');
title('Subplot 3 and 4: Both')

Figure contains 3 axes objects. Axes object 1 with title Subplot 1: Cosine contains an object of type line. Axes object 2 with title Subplot 2: Polynomial contains an object of type line. Axes object 3 with title Subplot 3 and 4: Both contains 2 objects of type line.

Cree una figura con cuatro gráficas de puntos de datos aleatorios. Después, sustituya la segunda subgráfica por ejes vacíos.

for k = 1:4
    data = rand(1,10);
    subplot(2,2,k)
    stem(data)
end

Figure contains 4 axes objects. Axes object 1 contains an object of type stem. Axes object 2 contains an object of type stem. Axes object 3 contains an object of type stem. Axes object 4 contains an object of type stem.

subplot(2,2,2,'replace')

Figure contains 4 axes objects. Axes object 1 contains an object of type stem. Axes object 2 contains an object of type stem. Axes object 3 contains an object of type stem. Axes object 4 is empty.

Cree una figura con dos subgráficas que no estén alineadas con posiciones de cuadrícula. Especifique una posición personalizada para cada subgráfica.

pos1 = [0.1 0.3 0.3 0.3];
subplot('Position',pos1)
y = magic(4);
plot(y)
title('First Subplot')

pos2 = [0.5 0.15 0.4 0.7];
subplot('Position',pos2)
bar(y)
title('Second Subplot')

Figure contains 2 axes objects. Axes object 1 with title First Subplot contains 4 objects of type line. Axes object 2 with title Second Subplot contains 4 objects of type bar.

Cree una figura con dos ejes polares. Cree una gráfica de líneas polares en la subgráfica superior y una gráfica de dispersión polar en la subgráfica inferior.

figure
ax1 = subplot(2,1,1,polaraxes);
theta = linspace(0,2*pi,50);
rho = sin(theta).*cos(theta);
polarplot(ax1,theta,rho)

ax2 = subplot(2,1,2,polaraxes);
polarscatter(ax2,theta,rho)

Figure contains 2 axes objects. Polaraxes object 1 contains an object of type line. Polaraxes object 2 contains an object of type scatter.

Cree una figura con dos subgráficas. Asigne los objetos Axes a las variables ax1 y ax2. Especifique los objetos Axes como entradas de las funciones de representación para garantizar que las funciones se representen en una subgráfica específica.

ax1 = subplot(2,1,1);
Z = peaks;
plot(ax1,Z(1:20,:))

ax2 = subplot(2,1,2);  
plot(ax2,Z)

Figure contains 2 axes objects. Axes object 1 contains 49 objects of type line. Axes object 2 contains 49 objects of type line.

Modifique los ejes estableciendo las propiedades de los objetos Axes. Cambie el tamaño de la fuente de la subgráfica superior y el ancho de línea de la gráfica inferior. Algunas funciones de representación establecen las propiedades de los ejes. Ejecute las funciones de representación antes de especificar las propiedades de los ejes, a fin de evitar que se reemplacen ajustes de propiedades de los ejes ya existentes. Utilice la notación de puntos para establecer las propiedades.

ax1.FontSize = 15;
ax2.LineWidth = 2;

Figure contains 2 axes objects. Axes object 1 contains 49 objects of type line. Axes object 2 contains 49 objects of type line.

Cree una figura con múltiples subgráficas. Guarde los objetos Axes del vector ax. Después, convierta la segunda subgráfica en los ejes actuales. Cree una gráfica de líneas y cambie los límites del eje de la segunda subgráfica. De forma predeterminada, las funciones de las gráficas afectan a los ejes actuales.

for k = 1:4
    ax(k) = subplot(2,2,k);
end

subplot(ax(2))
x = linspace(1,50);
y = sin(x);
plot(x,y,'Color',[0.1, 0.5, 0.1])
title('Second Subplot')
axis([0 50 -1 1])

Figure contains 4 axes objects. Axes object 1 is empty. Axes object 2 with title Second Subplot contains an object of type line. Axes object 3 is empty. Axes object 4 is empty.

Cree una gráfica de líneas. Después, convierta los ejes para que sean la subgráfica inferior de la figura. La función de subgráfica utiliza la figura en la que se encontraban los ejes originales.

x = linspace(1,10);
y = sin(x);
plot(x,y)
title('Sine Plot')

Figure contains an axes object. The axes object with title Sine Plot contains an object of type line.

ax = gca;
subplot(2,1,2,ax)

Figure contains an axes object. The axes object with title Sine Plot contains an object of type line.

Combine los ejes que se encuentran en distintas figuras en una única figura con subgráficas.

Cree dos gráficas en dos figuras. Asigne los objetos Axes a las variables ax1 y ax2. Asigne el objeto Legend a la variable lgd.

figure
x = linspace(0,10);
y1 = sin(x);
plot(x,y1)
title('Line Plot 1')
ax1 = gca;

Plot of a sine wave entitled "Line Plot 1"

figure
y2 = 2*sin(x);
plot(x,y2)
title('Line Plot 2')
lgd = legend('2*Sin(x)');
ax2 = gca;

Plot of a sine wave with a legend entitled "Line Plot 2"

Cree copias de los dos objetos Axes utilizando copyobj. Especifique los elementos principales de los ejes copiados como figura nueva. Puesto que las leyendas y las barras de colores no se copian con los ejes asociados, copie la leyenda con los ejes.

fnew = figure;
ax1_copy = copyobj(ax1,fnew);
subplot(2,1,1,ax1_copy)

copies = copyobj([ax2,lgd],fnew);
ax2_copy = copies(1);
subplot(2,1,2,ax2_copy)

Figure containing both of the preceding plots

Argumentos de entrada

contraer todo

Número de filas de cuadrícula, especificado como escalar entero positivo.

Tipos de datos: single | double

Número de columnas de cuadrícula, especificado como entero positivo.

Tipos de datos: single | double

Posición de cuadrículas para los ejes nuevos, especificada como escalar o vector de enteros positivos.

  • Si p es un entero positivo escalar, subplot crea una subgráfica en la posición de cuadrícula p.

  • Si p es un vector de enteros positivos, subplot crea una subgráfica que abarca las posiciones de cuadrícula que se enumeran en p.

Ejemplo: subplot(2,3,1) crea una subgráfica en la posición 1.

Ejemplo: subplot(2,3,[2,5]) crea una subgráfica que abarca las posiciones 2 y 5.

Ejemplo: subplot(2,3,[2,6]) crea una subgráfica que abarca las posiciones 2, 3, 5 y 6.

Tipos de datos: single | double

Posición personalizada para los ejes nuevos, especificada como vector de cuatro elementos con el formato [left bottom width height].

  • Los elementos left y bottom especifican la posición de la esquina inferior izquierda de la subgráfica con respecto a la esquina inferior izquierda de la figura.

  • Los elementos width y height especifican las dimensiones de la subgráfica.

Especifique los valores entre 0 y 1 que estén normalizados con respecto al interior de la figura.

Nota

Cuando se utiliza un script para crear subgráficas, MATLAB no finaliza el valor de propiedad Position hasta que se emite un comando drawnow o hasta que MATLAB vuelve a esperar un comando del usuario. El valor de propiedad Position de una subgráfica está sujeto a cambios hasta que el script actualice la gráfica o se cierre.

Ejemplo: subplot('Position',[0.1 0.1 0.45 0.45])

Tipos de datos: single | double

Ejes existentes que convertir en los actuales o convertir a una subgráfica, especificados como objeto Axes, objeto PolarAxes, objeto GeographicAxes u objeto de gráficas con una propiedad PositionConstraint, tal como un objeto HeatmapChart.

Para crear ejes polares o geográficos vacíos en una posición de subgráfica, especifique ax como la función polaraxes o geoaxes. Por ejemplo, subplot(2,1,2,polaraxes).

Argumentos de par nombre-valor

Especifique pares opcionales de argumentos como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos nombre-valor deben aparecer después de otros argumentos, pero el orden de los pares no importa.

En las versiones anteriores a R2021a, utilice comas para separar cada nombre y valor, y encierre Name entre comillas.

Ejemplo: subplot(m,n,p,'XGrid','on')

Algunas funciones de representación reemplazan los ajustes de propiedades. Considere establecer las propiedades de los ejes después de representar. Las propiedades que puede establecer dependen del tipo de ejes:

Sugerencias

  • Para borrar el contenido de la figura, utilice clf. Por ejemplo, puede borrar el diseño de subgráfica existente de la figura antes de crear un diseño de subgráfica nuevo.

  • Para solapar ejes, utilice en su lugar el comando axes. La función subplot elimina los ejes existentes que se solapen con los ejes nuevos. Por ejemplo, subplot('Position',[.35 .35 .3 .3]) elimina todos los ejes subyacentes, pero axes('Position',[.35 .35 .3 .3]) posiciona ejes nuevos en el centro de la figura sin eliminar los ejes subyacentes.

  • subplot(111) es una excepción cuyo comportamiento no es igual al de subplot(1,1,1). Por motivos de retrocompatibilidad, subplot(111) es un caso de subgráfica especial que no crea ejes inmediatamente, sino que configura la figura para que el próximo comando de gráficas ejecute clf reset. El siguiente comando de gráficas elimina todos los elementos secundarios de la figura y crea ejes nuevos en la posición predeterminada. subplot(111) no devuelve un objeto Axes y se produce un error si el código especifica un argumento de devolución.

Funcionalidad alternativa

Utilice las funciones tiledlayout y nexttile para crear un mosaico de gráficas configurable. Las opciones de configuración incluyen:

  • Control del espacio entre las gráficas y en los bordes del diseño

  • Opción de título compartido en la parte superior del diseño

  • Opciones de etiquetas de eje x e y compartidas

  • Opción para controlar si el mosaico presenta un tamaño fijo o variable que se pueda reordenar

Para obtener más información, consulte Combinar varias gráficas.

Historial de versiones

Introducido antes de R2006a