Contenido principal

pcolor

Gráfica de pseudocolor

  • Pseudocolor plot

Descripción

pcolor(C) crea una gráfica de pseudocolor usando los valores de la matriz C. Una gráfica de pseudocolor muestra datos de matriz como un arreglo de celdas coloreadas (conocidas como caras). MATLAB® crea esta gráfica como una superficie plana en el plano x-y. La superficie se define por una cuadrícula de coordenadas x e y que corresponden a las esquinas (o vértices) de las caras. La cuadrícula cubre la región X=1:n e Y=1:m, donde [m,n] = size(C). La matriz C especifica los colores de los vértices. El color de cada cara depende del color de uno de los cuatro vértices que hay a su alrededor. De los cuatro vértices, el que aparece primero en la cuadrícula x-y determina el color de la cara.

ejemplo

pcolor(X,Y,C) especifica las coordenadas x e y para los vértices. El tamaño de C debe coincidir con el tamaño de la cuadrícula de coordenadas x-y. Por ejemplo, si X e Y definen una cuadrícula de m por n, C debe ser una matriz de m por n.

ejemplo

pcolor(___,Name=Value) establece las propiedades de la gráfica utilizando uno o más argumentos nombre-valor. Por ejemplo, puede especificar el color u ocultar las líneas de malla de la gráfica. Para obtener una lista de las propiedades, consulte Surface Properties. (desde R2024b)

pcolor(ax,___) especifica los ejes objetivo para la gráfica. Especifique ax como primer argumento en cualquiera de las sintaxis anteriores.

ejemplo

s = pcolor(___) devuelve un objeto Surface. Use s para establecer las propiedades de la gráfica después de crearla. Para obtener una lista de las propiedades, consulte Surface Properties.

ejemplo

Ejemplos

contraer todo

Cree vectores de coordenadas X e Y y un mapa de colores llamado mymap que contenga cinco colores: rojo, verde, azul, amarillo y negro.

X = [1 2 3; 1 2 3; 1 2 3];
Y = X';
mymap = [1 0 0; 0 1 0; 0 0 1; 1 1 0; 0 0 0];

Cree una matriz C que asigne los colores del mapa de colores a nueve vértices. Cuatro de los nueve vértices determinan los colores de las caras. Especifique los colores de esos vértices para que las caras sean roja (1), verde (2), azul (3) y amarilla (4), respectivamente. Establezca los colores de los otros vértices en negro (5).

C = [3 4 5; 1 2 5; 5 5 5];

Represente las caras y llame a la función colormap para reemplazar el mapa de colores predeterminado con mymap.

pcolor(X,Y,C)
colormap(mymap)

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

Una matriz de Hadamard tiene elementos que son 1 o -1. Una buena forma de visualizar esta matriz es con un mapa de colores de dos colores.

Cree una matriz de Hadamard de 20 por 20. Después, represente la matriz usando un mapa de colores blanco y negro. Utilice la función axis para invertir la dirección del eje y y establezca las líneas del eje con longitudes iguales.

C = hadamard(20);
pcolor(C)
colormap(gray(2))
axis ij
axis square

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

Cree una matriz de colores C. Luego, cree una gráfica de pseudocolor de C y almacene el objeto Surface en el argumento de retorno s.

C = [1 2 3; 4 5 6; 7 8 9];
s = pcolor(C);

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

Cambie el color de borde estableciendo la propiedad EdgeColor de s. Haga el borde más grueso estableciendo la propiedad LineWidth.

s.EdgeColor = [1 0.7 0.3];
s.LineWidth = 6;

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

Cree una matriz de colores C. Luego, cree una gráfica de pseudocolor de C y almacene el objeto Surface en el argumento de retorno s.

C = [5 13 9 7 12; 11 2 14 8 10; 6 1 3 4 15];
s = pcolor(C);

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

Para interpolar los colores en las caras, establezca la propiedad FaceColor de s en 'interp'.

s.FaceColor = 'interp';

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

Cree las matrices X e Y, que definen una cuadrícula de vértices espaciada regularmente. Calcule la matriz LY como el logaritmo de Y. Después, cree una matriz C que contenga pares alternos de filas de índices de colores.

[X,Y] = meshgrid(1:20);
LY = log(Y);
colorscale = [1:20; 20:-1:1];
C = repmat(colorscale,10,1);

Represente X y LY usando los colores especificados en C. Luego, ajuste las etiquetas de marcas del eje y.

s = pcolor(X,LY,C);
tickvals = LY(2:2:20,1)';
set(gca,'YTick',tickvals);

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

Cree las matrices X e Y, que definen una cuadrícula de vértices espaciada regularmente. Calcule las matrices XX e YY como funciones de X e Y. Después, cree una matriz C que contenga pares alternos de filas de índices de colores.

[X,Y] = meshgrid(-3:6/17:3);
XX = 2*X.*Y;
YY = X.^2 - Y.^2;
colorscale = [1:18; 18:-1:1];
C = repmat(colorscale,9,1);

Represente XX e YY usando los colores de C.

pcolor(XX,YY,C);

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

Llame a la función tiledlayout para crear un diseño de gráfica en mosaico de 1 por 2. Llame a la función nexttile para crear los objetos de ejes ax1 y ax2. Cree dos gráficas de pseudocolor especificando los ejes como primer argumento de pcolor.

tiledlayout(1,2)

% Left plot
ax1 = nexttile;
C1 = rand(20,10);
pcolor(ax1,C1)

% Right plot
ax2 = nexttile;
C2 = rand(50,10);
pcolor(ax2,C2)

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

Argumentos de entrada

contraer todo

Matriz de colores que contiene índices en el mapa de colores. Los valores de C asignan colores del arreglo del mapa de colores a los vértices que rodean cada cara. El color de una cara depende del color de uno de sus cuatro vértices. De los cuatro vértices, el que aparece primero en X e Y determina el color de la cara. Si no especifica X e Y, MATLAB utiliza X=1:n e Y=1:m, donde [m,n] = size(C). Debido a esta relación entre los colores de los vértices y los colores de las caras, ninguno de los valores de la última fila y columna de C están representados en la gráfica.

2-by-2 pseudocolor plot with four faces and a different colored dot at each of the nine vertices. The color of each face is determined by the color of its lower-left vertex. The five vertices along the top and right edges of the plot do not determine the color of any face.

Nota

El primer vértice de una cara es el que está más cerca de la esquina superior izquierda de la matriz correspondiente. No obstante, dado que el eje y aumenta de la parte inferior a la parte superior, el primer vértice que se muestra en la gráfica es normalmente el que se encuentra en la esquina inferior izquierda de la cara. Para conseguir el efecto que desea, es posible que deba cambiar la orientación del eje y o la orientación de la matriz C.

Si desea ver un ejemplo sencillo que muestre la relación entre los colores de los vértices y las caras, consulte Representar cuatro caras con cuatro colores.

Los valores de C escalan al intervalo completo del mapa de colores. El valor más pequeño de C se asigna a la primera fila del arreglo del mapa de colores. El valor más grande de C se asigna a la última fila del arreglo del mapa de colores. Los valores intermedios de C se asignan de forma lineal a las filas intermedias del arreglo del mapa de colores. Puede ajustar esta asignación con la función clim.

Antes de R2022a: Utilice la función caxis, que tiene las mismas sintaxis y argumentos que clim.

La propiedad CData del objeto Surface almacena los valores de C.

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

Coordenadas x, especificadas como matriz del mismo tamaño que C o como vector de longitud n, donde [m,n] = size(C). El valor predeterminado de X es el vector (1:n).

Para crear una cuadrícula rectangular de vértices, especifique X como una de las siguientes opciones:

  • Un vector que contiene valores que son ascendentes o descendentes.

  • Una matriz que sea creciente o decreciente en una dimensión y sea constante en la otra. Establezca la dimensión que varía en la opuesta de la dimensión que varía en la matriz Y. Puede usar la función meshgrid para crear las matrices X e Y.

Para crear una cuadrícula paramétrica, cree una cuadrícula rectangular y pásela usando una función matemática.

Ejemplo: X = 1:10

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

Ejemplo: [X,Y] = meshgrid(1:10)

La propiedad XData del objeto Surface guarda las coordenadas x.

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 C o como vector de longitud m, donde [m,n] = size(C). El valor predeterminado de Y es el vector (1:m).

Para crear una cuadrícula rectangular de vértices, especifique Y como una de las siguientes opciones:

  • Un vector que contiene valores que son ascendentes o descendentes.

  • Una matriz que sea creciente o decreciente en una dimensión y sea constante en la otra. Establezca la dimensión que varía en la opuesta de la dimensión que varía en la matriz X. Puede usar la función meshgrid para crear las matrices X e Y.

Para crear una cuadrícula paramétrica, cree una cuadrícula rectangular y pásela usando una función matemática.

Ejemplo: Y = 1:10

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

Ejemplo: [X,Y] = meshgrid(1:10)

La propiedad YData del objeto Surface guarda las coordenadas y.

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

Ejes en los que representar, especificados como un objeto Axes o PolarAxes. Si no especifica los ejes, pcolor representa en los ejes actuales o crea un objeto Axes (ejes cartesianos).

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.

Ejemplo: pcolor([1 2 3; 4 5 6; 7 8 9],FaceColor="interp") interpola el color en las caras.

Nota

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

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

Color de línea de borde, especificado como uno de los valores enumerados en esta tabla.

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

Algoritmos

Use las funciones pcolor, image e imagesc para mostrar arreglos rectangulares de celdas coloreadas. La relación entre la matriz de colores C y las celdas coloreadas es diferente en cada caso.

  • pcolor(C) usa los valores de C para definir los colores de los vértices escalando al intervalo completo del mapa de colores. El tamaño de C determina el número de vértices. Los valores de C asignan colores del mapa de colores actual a los vértices que rodean cada celda.

  • image(C) usa C para definir colores de celda asignando los valores directamente al mapa de colores. El tamaño de C determina el número de celdas.

  • imagesc(C) usa C para definir los colores de celda escalando al intervalo completo del mapa de colores. El tamaño de C determina el número de celdas.

Capacidades ampliadas

expandir todo

Historial de versiones

Introducido antes de R2006a

expandir todo