Main Content

surface

Gráfica de superficie primitiva

Descripción

ejemplo

surface(X,Y,Z) crea una gráfica de superficie primitiva tridimensional. 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.

A diferencia de surf, la función primitiva surface no llama a newplot antes de la representación y no respeta el valor de la propiedad NextPlot para la figura o los ejes. En cambio, añade la gráfica de superficie a los ejes actuales sin eliminar otros objetos de gráficas ni restablecer las propiedades de los ejes.

ejemplo

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

surface(Z) crea una gráfica de superficie primitiva y usa los índices de columna y de fila de los elementos de Z como coordenadas x e y.

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

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

ejemplo

surface(___,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

s = surface(___) devuelve el objeto de superficie primitiva de la gráfica. Utilice s para modificar la superficie después de crearla. Para obtener una lista de las propiedades, consulte Surface Properties.

Ejemplos

contraer todo

Cree tres matrices del mismo tamaño. Después, represéntelas como una 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);
surface(X,Y,Z)

Figure contains an axes object. The axes object contains an object of type surface.

De forma predeterminada, la superficie se muestra en los ejes utilizando una vista bidimensional. Cambie los ejes a una vista tridimensional.

view(3)

Figure contains an axes object. The axes object contains an object of type surface.

Especifique los colores para una gráfica de superficie incluyendo una cuarta entrada de matriz, C. La gráfica de malla 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, y establezca la vista de la gráfica en la vista tridimensional predeterminada.

[X,Y] = meshgrid(1:0.5:10,1:20);
Z = sin(X) + cos(Y);
C = X.*Y;
surface(X,Y,Z,C)
colorbar
view(3)

Figure contains an axes object. The axes object contains an object of type surface.

Cree una superficie semitransparente especificando el par nombre-valor FaceAlpha con 0.5 como valor. Para permitir más modificaciones, asigne el objeto de superficie a la variable s.

[X,Y] = meshgrid(-5:.5:5);
Z = Y.*sin(X) - X.*cos(Y);
s = surface(X,Y,Z,'FaceAlpha',0.5);
view(3)

Figure contains an axes object. The axes object contains an object of type surface.

Utilice s para acceder y modificar las propiedades de un objeto de superficie después de crearlo. Por ejemplo, oculte los bordes estableciendo la propiedad EdgeColor.

s.EdgeColor = 'none';

Figure contains an axes object. The axes object contains an object of type surface.

Cree una superficie y muestre una imagen en ella.

Cree tres matrices del mismo tamaño.

[pX,pY,pZ] = peaks(25);

Cargue un conjunto de datos que contenga una imagen de la Tierra. Los datos de la imagen aparecen en una variable del área de trabajo X, y el mapa de colores asociado aparece en map.

load earth
who
Your variables are:

X    map  pX   pY   pZ   

Cree una gráfica de superficie y visualice la imagen a lo largo de la superficie. Dado que los datos de superficie pZ y los datos de color X tienen tamaños diferentes, establezca la superficie FaceColor en 'texturemap'. Establezca la vista de la gráfica en la vista tridimensional predeterminada.

surface(pX,pY,pZ,X,'FaceColor','texturemap', ...
    'EdgeColor','none','CDataMapping','direct')
colormap(map)
view(3)

Figure contains an axes object. The axes object contains an object of type surface.

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, surface utiliza los vectores (1:n) y (1:m).

Puede usar la función meshgrid para crear matrices X e Y.

La propiedad XData del objeto Surface guarda 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 | datetime | duration

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, surface utiliza los vectores (1:n) y (1:m).

Puede usar la función meshgrid para crear las matrices X e Y.

La propiedad YData del objeto de superficie guarda 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 | datetime | duration

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.

La propiedad ZData del objeto de superficie guarda 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 | datetime | duration

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, surface representa en los ejes actuales.

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: surface(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

A continuación, se indican los tripletes RGB y los códigos de color hexadecimales de los colores predeterminados que MATLAB® utiliza en muchos tipos de gráficas.

Triplete RGBCódigo de color hexadecimalApariencia
[0 0.4470 0.7410]"#0072BD"

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980]"#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250]"#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560]"#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880]"#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330]"#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840]"#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

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

A continuación, se indican los tripletes RGB y los códigos de color hexadecimales de los colores predeterminados que MATLAB utiliza en muchos tipos de gráficas.

Triplete RGBCódigo de color hexadecimalApariencia
[0 0.4470 0.7410]"#0072BD"

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980]"#D95319"

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250]"#EDB120"

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560]"#7E2F8E"

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880]"#77AC30"

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330]"#4DBEEE"

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840]"#A2142F"

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

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'.

Historial de versiones

Introducido antes de R2006a