Contenido principal

surfc

Diagrama de contorno bajo una gráfica de superficie

  • Contour plot under surface plot

Descripción

surfc(X,Y,Z) crea una gráfica de superficie tridimensional con un diagrama de contorno por debajo. Una gráfica de superficie es una superficie tridimensional que tiene colores de borde y de cara sólidos. La función representa los valores en la matriz Z como alturas sobre una cuadrícula en el plano x-y que definen X e Y. El color de la superficie varía según las alturas que especifique Z.

ejemplo

surfc(X,Y,Z,C) especifica adicionalmente el color de superficie.

ejemplo

surfc(Z) crea una gráfica de superficie y un diagrama de contorno y usa los índices de columna y de fila de los elementos de Z como coordenadas x-y.

surfc(Z,C) especifica adicionalmente el color de superficie.

surfc(ax,___) representa en los ejes que especifica ax en lugar de en los ejes actuales. Especifique los ejes como primer argumento de entrada.

surfc(___,Name,Value) especifica las propiedades de superficie utilizando uno o más argumentos de par nombre-valor. Por ejemplo, 'FaceAlpha',0.5 crea una superficie semitransparente.

ejemplo

sc = surfc(___) devuelve un arreglo de gráficas que incluye el objeto de superficie y el objeto de contorno de la gráfica. Use sc para modificar la gráfica de superficie y el diagrama de contorno después de crearlos. Para obtener una lista de las propiedades, consulte Surface Properties y Contour Properties.

ejemplo

Ejemplos

contraer todo

Cree tres matrices del mismo tamaño. Después, represéntelas como una superficie y muestre un diagrama de contorno debajo de la gráfica de superficie. La superficie utiliza Z tanto para la altura como para el color.

[X,Y] = meshgrid(1:0.5:10,1:20);
Z = sin(X) + cos(Y);
surfc(X,Y,Z)

Figure contains an axes object. The axes object contains 2 objects of type surface, contour.

Especifique los colores para una gráfica de superficie y un diagrama de contorno incluyendo una cuarta entrada de matriz, C. La gráfica de superficie utiliza Z para la altura y C para el color. Especifique los colores utilizando un mapa de colores, que usa números únicos para representar los colores de un espectro. Cuando utilice un mapa de colores, C tiene el mismo tamaño que Z. Añada una barra de colores a la gráfica para mostrar cómo los valores de los datos de C se corresponden con los colores en el mapa de colores.

[X,Y] = meshgrid(-3:.125:3);
Z = peaks(X,Y);
C = X.*Y;
surfc(X,Y,Z,C)
colorbar

Figure contains an axes object. The axes object contains 2 objects of type surface, contour.

Cree una gráfica de superficie azul con un diagrama de contorno debajo de esta especificando el par nombre-valor FaceColor con 'b' como valor. Para permitir más modificaciones, asigne el arreglo de gráficas que contiene los objetos de superficie y contorno a la variable sc.

[X,Y] = meshgrid(-5:.5:5);
Z = Y.*sin(X) - X.*cos(Y);
sc = surfc(X,Y,Z,'FaceColor','b');

Figure contains an axes object. The axes object contains 2 objects of type surface, contour.

Indexe en sc para acceder y modificar las propiedades de la gráfica de superficie y el diagrama de contorno después de crearlos. La gráfica de superficie es accesible como sc(1) y el diagrama de contorno como sc(2). Por ejemplo, modifique el color de borde de la gráfica y del diagrama estableciendo la propiedad EdgeColor.

sc(1).EdgeColor = 'r';
sc(2).EdgeColor = 'b';

Figure contains an axes object. The axes object contains 2 objects of type surface, contour.

Las líneas de contorno aparecen en el nivel z mínimo de forma predeterminada, pero puede cambiar la ubicación estableciendo la propiedad ZLocation.

Muestre el conjunto de datos peaks como una gráfica de superficie con los contornos en el nivel z mínimo. Especifique un argumento de retorno cuando llame a la función surfc para que pueda acceder al objeto Contour.

Z = peaks;
sc = surfc(Z);

Figure contains an axes object. The axes object contains 2 objects of type surface, contour.

Obtenga los ejes actuales y extienda el límite superior del eje z a 15. Después, mueva los contornos al nivel z máximo.

ax = gca;
ax.ZLim(2) = 15;
sc(2).ZLocation = 'zmax';

Figure contains an axes object. The axes object contains 2 objects of type surface, contour.

Argumentos de entrada

contraer todo

Coordenadas x, especificadas como matriz del mismo tamaño que Z o como vector con una longitud n, en el que [m,n] = size(Z). Si no especifica valores para X e Y, surfc utiliza los vectores (1:n) y (1:m).

Cuando X es una matriz, los valores deben ser estrictamente crecientes o decrecientes en una dimensión y mantenerse constantes en la otra. La dimensión que varía debe ser la opuesta a la dimensión que varía en Y. Puede usar la función meshgrid para crear matrices X e Y.

Cuando X es un vector, los valores deben ser estrictamente crecientes o decrecientes.

Las propiedades XData del objeto de superficie y del objeto de contorno guardan las coordenadas x.

Ejemplo: X = 1:10

Ejemplo: X = [1 2 3; 1 2 3; 1 2 3]

Ejemplo: [X,Y] = meshgrid(-5:0.5:5)

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical

Coordenadas y, especificadas como matriz del mismo tamaño que Z o como vector con una longitud m, en el que [m,n] = size(Z). Si no especifica valores para X e Y, surfc utiliza los vectores (1:n) y (1:m).

Cuando Y es una matriz, los valores deben ser estrictamente crecientes o decrecientes en una dimensión y mantenerse constantes en la otra. La dimensión que varía debe ser la opuesta a la dimensión que varía en X. Puede usar la función meshgrid para crear matrices X e Y.

Cuando Y es un vector, los valores deben ser estrictamente crecientes o decrecientes.

Las propiedades YData del objeto de superficie y del objeto de contorno guardan las coordenadas y.

Ejemplo: Y = 1:10

Ejemplo: Y = [1 1 1; 2 2 2; 3 3 3]

Ejemplo: [X,Y] = meshgrid(-5:0.5:5)

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical

Coordenadas z, especificadas como matriz. Z debe tener al menos dos filas y dos columnas.

Z especifica la altura de la gráfica de superficie en cada coordenada x-y. Si no especifica los colores, Z también especifica los colores de superficie.

Las propiedades ZData del objeto de superficie y del objeto de contorno guardan las coordenadas z.

Ejemplo: Z = [1 2 3; 4 5 6]

Ejemplo: Z = sin(x) + cos(y)

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical

Arreglo de colores, especificado como matriz m por n de índices del mapa de colores o como arreglo m por n por 3 de tripletes RGB, en el que Z es m por n.

  • Para usar colores del mapa de colores, especifique C como matriz. C indica un color en el mapa de colores en cada punto de cuadrícula de la superficie. La propiedad CDataMapping del objeto de superficie controla cómo se corresponden los valores de C con colores en el mapa de colores.

  • Para usar colores de color real, especifique C como arreglo de tripletes RGB.

Para obtener más información, consulte Diferencias entre los mapas de colores y el color real.

La propiedad CData del objeto de superficie guarda el arreglo de colores. Para tener un mayor control sobre el color de la superficie, utilice las propiedades FaceColor y EdgeColor.

Ejes en los que representar, especificados como objeto axes. Si no especifica los ejes, surfc representa en los ejes actuales.

Argumentos de par nombre-valor

contraer todo

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: surfc(X,Y,Z,'FaceAlpha',0.5,'EdgeColor','none') crea una superficie semitransparente sin bordes dibujados.

Nota

Las propiedades que se enumeran aquí son solo un subconjunto. Para obtener una lista completa, consulte Surface Properties.

Color de línea de borde, especificado como uno de los valores que se enumeran aquí. El color predeterminado de [0 0 0] se corresponde con bordes negros.

ValorDescripción
'none'No dibuje los bordes.
'flat'

Utilice un color diferente para cada borde según los valores en la propiedad CData. En primer lugar, debe especificar la propiedad CData como matriz del mismo tamaño que ZData. El valor de color del primer vértice de cada cara (en las direcciones positivas x e y) determina el color de los bordes adyacentes. No puede utilizar este valor cuando la propiedad EdgeAlpha está establecida en 'interp'.

Sample of a surface with each edge a different color based on sample values in the CData property

'interp'

Utilice colores interpolados para cada borde según los valores en la propiedad CData. En primer lugar, debe especificar la propiedad CData como matriz del mismo tamaño que ZData. El color varía en cada borde interpolando linealmente los valores de color en los vértices. No puede utilizar este valor cuando la propiedad EdgeAlpha está establecida en 'flat'.

Sample of a surface with each edge showing different interpolated coloring based on sample values in the CData property

Triplete RGB, código de color hexadecimal o nombre del color

Utilice el color especificado para todos los bordes. Esta opción no incluye los valores de color en la propiedad CData.

Sample of a surface with all edges shown in red

Los tripletes RGB y los códigos de color hexadecimales son útiles para especificar colores personalizados.

  • Un triplete RGB es un vector fila de tres elementos, cuyos elementos especifican las intensidades de los componentes rojo, verde y azul del color. Las intensidades deben estar en el rango [0,1]; por ejemplo, [0.4 0.6 0.7].

  • Un código de color hexadecimal es un vector de caracteres o un escalar de cadena que comienza con el símbolo de almohadilla (#) seguido de tres o seis dígitos hexadecimales, que pueden oscilar entre 0 y F. Los valores no distinguen entre mayúsculas y minúsculas. Así, los códigos de color "#FF8800", "#ff8800", "#F80" y "#f80" son equivalentes.

Como alternativa, puede especificar algunos colores frecuentes por su nombre. En esta tabla se enumeran las opciones de color con su nombre, los tripletes RGB equivalentes y los códigos de color hexadecimales.

Nombre del colorNombre cortoTriplete RGBCódigo de color hexadecimalApariencia
"red""r"[1 0 0]"#FF0000"

Sample of the color red

"green""g"[0 1 0]"#00FF00"

Sample of the color green

"blue""b"[0 0 1]"#0000FF"

Sample of the color blue

"cyan" "c"[0 1 1]"#00FFFF"

Sample of the color cyan

"magenta""m"[1 0 1]"#FF00FF"

Sample of the color magenta

"yellow""y"[1 1 0]"#FFFF00"

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

En esta tabla, se enumeran las paletas de colores predeterminados para las gráficas en los temas claro y oscuro.

PaletaColores de la paleta

"gem": tema claro predeterminado

Antes de R2025a: La mayoría de las gráficas utilizan estos colores de forma predeterminada.

Sample of the "gem" color palette

"glow": tema oscuro predeterminado

Sample of the "glow" color palette

Puede obtener los tripletes RGB y los códigos de color hexadecimales de estas paletas usando las funciones orderedcolors y rgb2hex. Por ejemplo, puede obtener los tripletes RGB de la paleta "gem" y convertirlos en códigos de color hexadecimales.

RGB = orderedcolors("gem");
H = rgb2hex(RGB);

Antes de R2023b: Obtenga los tripletes RGB usando RGB = get(groot,"FactoryAxesColorOrder").

Antes de R2024a: Obtenga los códigos de color hexadecimales usando H = compose("#%02X%02X%02X",round(RGB*255)).

Estilo de línea, especificado como una de las opciones enumeradas en esta tabla.

Estilo de líneaDescripciónLínea resultante
"-"Línea continua

Sample of solid line

"--"Línea discontinua

Sample of dashed line

":"Línea de puntos

Sample of dotted line

"-."Línea de puntos y rayas

Sample of dash-dotted line, with alternating dashes and dots

"none"Sin líneaSin línea

Color de cara, especificado como uno de los valores de esta tabla.

ValorDescripción
'flat'

Utilice un color diferente para cada cara según los valores en la propiedad CData. En primer lugar, debe especificar la propiedad CData como matriz del mismo tamaño que ZData. El valor de color del primer vértice de cada cara (en las direcciones positivas x e y) determina el color de toda la cara. No puede utilizar este valor cuando la propiedad FaceAlpha está establecida en 'interp'.

Sample of a surface with each face a different color based on sample values in the CData property

'interp'

Utilice colores interpolados para cada cara según los valores en la propiedad CData. En primer lugar, debe especificar la propiedad CData como matriz del mismo tamaño que ZData. El color varía en cada cara interpolando los valores de color en los vértices. No puede utilizar este valor cuando la propiedad FaceAlpha está establecida en 'flat'.

Sample of a surface with each face showing different interpolated coloring based on sample values in the CData property

Triplete RGB, código de color hexadecimal o nombre del color

Utilice el color especificado para todas las caras. Esta opción no incluye los valores de color en la propiedad CData.

Sample of a surface with all faces shown in red

'texturemap'Transforme los datos de color de CData, para que se adapte a la superficie.
'none'No dibuje las caras.

Los tripletes RGB y los códigos de color hexadecimales son útiles para especificar colores personalizados.

  • Un triplete RGB es un vector fila de tres elementos, cuyos elementos especifican las intensidades de los componentes rojo, verde y azul del color. Las intensidades deben estar en el rango [0,1]; por ejemplo, [0.4 0.6 0.7].

  • Un código de color hexadecimal es un vector de caracteres o un escalar de cadena que comienza con el símbolo de almohadilla (#) seguido de tres o seis dígitos hexadecimales, que pueden oscilar entre 0 y F. Los valores no distinguen entre mayúsculas y minúsculas. Así, los códigos de color "#FF8800", "#ff8800", "#F80" y "#f80" son equivalentes.

Como alternativa, puede especificar algunos colores frecuentes por su nombre. En esta tabla se enumeran las opciones de color con su nombre, los tripletes RGB equivalentes y los códigos de color hexadecimales.

Nombre del colorNombre cortoTriplete RGBCódigo de color hexadecimalApariencia
"red""r"[1 0 0]"#FF0000"

Sample of the color red

"green""g"[0 1 0]"#00FF00"

Sample of the color green

"blue""b"[0 0 1]"#0000FF"

Sample of the color blue

"cyan" "c"[0 1 1]"#00FFFF"

Sample of the color cyan

"magenta""m"[1 0 1]"#FF00FF"

Sample of the color magenta

"yellow""y"[1 1 0]"#FFFF00"

Sample of the color yellow

"black""k"[0 0 0]"#000000"

Sample of the color black

"white""w"[1 1 1]"#FFFFFF"

Sample of the color white

En esta tabla, se enumeran las paletas de colores predeterminados para las gráficas en los temas claro y oscuro.

PaletaColores de la paleta

"gem": tema claro predeterminado

Antes de R2025a: La mayoría de las gráficas utilizan estos colores de forma predeterminada.

Sample of the "gem" color palette

"glow": tema oscuro predeterminado

Sample of the "glow" color palette

Puede obtener los tripletes RGB y los códigos de color hexadecimales de estas paletas usando las funciones orderedcolors y rgb2hex. Por ejemplo, puede obtener los tripletes RGB de la paleta "gem" y convertirlos en códigos de color hexadecimales.

RGB = orderedcolors("gem");
H = rgb2hex(RGB);

Antes de R2023b: Obtenga los tripletes RGB usando RGB = get(groot,"FactoryAxesColorOrder").

Antes de R2024a: Obtenga los códigos de color hexadecimales usando H = compose("#%02X%02X%02X",round(RGB*255)).

Transparencia de cara, especificada como uno de estos valores:

  • Escalar en el intervalo [0,1]: utiliza una transparencia uniforme en todas las caras. Un valor de 1 es totalmente opaco y 0 es totalmente transparente. Los valores situados entre 0 y 1 son semitransparentes. Esta opción no utiliza los valores de transparencia en la propiedad AlphaData.

  • 'flat': utiliza una transparencia diferente para cada cara según los valores en la propiedad AlphaData. El valor de transparencia del primer vértice determina la transparencia de toda la cara. En primer lugar, debe especificar la propiedad AlphaData como matriz del mismo tamaño que la propiedad ZData. La propiedad FaceColor también se debe establecer en 'flat'.

  • 'interp': utilice transparencia interpolada para cada cara según los valores de la propiedad AlphaData. La transparencia varía en cada cara interpolando los valores en los vértices. En primer lugar, debe especificar la propiedad AlphaData como matriz del mismo tamaño que la propiedad ZData. La propiedad FaceColor también se debe establecer en 'interp'.

  • 'texturemap': transforma los datos de AlphaData, para que se adapten a la superficie.

Efecto de los objetos de luz en las caras, especificado como uno de estos valores:

  • 'flat': aplica la luz uniformemente en toda la cara. Utilice este valor para ver objetos con caras.

  • 'gouraud': varía la luz en las distintas caras. Calcula la luz en los vértices y, después, interpola linealmente la luz en las distintas caras. Utilice este valor para ver superficies curvas.

  • 'none': no aplica luz de objetos de luz a las caras.

Para añadir un objeto de luz a los ejes, utilice la función light.

Nota

Se ha eliminado el valor 'phong'. En su lugar, utilice 'gouraud'.

Capacidades ampliadas

expandir todo

Historial de versiones

Introducido antes de R2006a