30/10/2022
En el vasto universo de la visualización de datos, la claridad es primordial. Un gráfico bien diseñado no solo presenta información, sino que la comunica de manera efectiva, permitiendo a la audiencia comprender instantáneamente los patrones y las tendencias. MATLAB, como una herramienta poderosa para el análisis y la visualización, ofrece una gran flexibilidad en la creación de gráficos. Sin embargo, a menudo, las configuraciones predeterminadas de los ejes, en particular las marcas de división (ticks) y sus etiquetas, pueden no ser suficientes para transmitir el mensaje deseado. Este artículo explora en profundidad cómo personalizar las marcas de división y sus etiquetas en MATLAB, transformando sus visualizaciones de simplemente "correctas" a verdaderamente informativas y atractivas. Aprenderá a ajustar la ubicación de las marcas, a formatear sus valores y a resolver desafíos comunes, como la superposición de etiquetas o la necesidad de mostrar marcas detalladas con etiquetas espaciadas.

- Control Básico de Ubicación y Etiquetas de Marcas de División
- Rotación de Etiquetas para una Legibilidad Óptima
- Formato de Etiquetas Personalizado: Más Allá de los Números
- El Desafío del Histograma: Marcas Finas con Etiquetas Espaciadas
- Control Avanzado con Objetos Ruler
- Tabla de Funciones y Propiedades Clave para la Personalización de Ejes
- Preguntas Frecuentes (FAQ)
- ¿MATLAB ajusta automáticamente las etiquetas de los ejes?
- ¿Cómo puedo tener muchas marcas de división visuales pero solo unas pocas etiquetas numéricas?
- ¿Puedo usar texto enriquecido o símbolos griegos en mis etiquetas de eje?
- ¿Cómo evito que las etiquetas de mis ejes se superpongan?
- ¿Cuál es la diferencia entre xticks y xticklabels?
Control Básico de Ubicación y Etiquetas de Marcas de División
MATLAB automáticamente genera marcas de división y etiquetas para sus ejes. Sin embargo, para resaltar puntos específicos en sus datos o para mejorar la legibilidad, a menudo es necesario tomar el control manual. Las funciones xticks, yticks y zticks le permiten especificar las ubicaciones exactas de las marcas de división a lo largo de los ejes X, Y y Z, respectivamente. Se les pasa un vector de valores numéricos que representan las posiciones donde desea que aparezcan las marcas.
Una vez que ha definido las ubicaciones de las marcas, puede personalizar el texto que aparece en cada una de ellas utilizando xticklabels, yticklabels y zticklabels. A estas funciones se les debe pasar una celda de caracteres, donde cada elemento de la celda corresponde a la etiqueta de una marca de división en el orden especificado por xticks. Es crucial que el número de etiquetas proporcionadas coincida con el número de ubicaciones de marcas de división.
Considere el siguiente ejemplo, donde visualizamos una función coseno y personalizamos sus ejes para mostrar múltiplos de π:
x = linspace(-10,10,200); y = cos(x); plot(x,y) % Cambiar la ubicación de las marcas en el eje X xticks([-3*pi -2*pi -pi 0 pi 2*pi 3*pi]) % Cambiar las etiquetas asociadas a cada marca en el eje X % Se usan caracteres TeX para símbolos como pi xticklabels({'-3\pi', '-2\pi', '-\pi', '0', '\pi', '2\pi', '3\pi'}) % Cambiar la ubicación de las marcas en el eje Y yticks([-1 -0.8 -0.2 0 0.2 0.8 1]) Para versiones de MATLAB anteriores a R2016b, en lugar de las funciones directas, se acceden a las propiedades XTick, XTickLabel, YTick y YTickLabel del objeto Axes. Primero, obtenga el objeto Axes (por ejemplo, ax = gca;), y luego establezca las propiedades usando la notación de punto (por ejemplo, ax.XTick = [-3*pi -2*pi -pi 0 pi 2*pi 3*pi];). Para versiones anteriores a R2014b, se utilizaría la función set.
Rotación de Etiquetas para una Legibilidad Óptima
Cuando el número de marcas de división es alto o las etiquetas son largas, es común que estas se superpongan, dificultando la lectura del gráfico. MATLAB ofrece una solución elegante a través de las funciones xtickangle y ytickangle, que permiten rotar las etiquetas de los ejes. Puede especificar un valor escalar en grados; los valores positivos indican una rotación en sentido antihorario, mientras que los valores negativos indican una rotación en sentido horario.
x = 1000*rand(40,1); y = rand(40,1); scatter(x,y) % Rotar las etiquetas del eje X 45 grados xtickangle(45) % Rotar las etiquetas del eje Y 90 grados ytickangle(90) Al igual que con las ubicaciones de las marcas, las versiones de MATLAB anteriores a R2016b requieren el uso de las propiedades XTickLabelRotation y YTickLabelRotation del objeto Axes (por ejemplo, ax.XTickLabelRotation = 45;).
Formato de Etiquetas Personalizado: Más Allá de los Números
Las etiquetas de los ejes no siempre tienen que ser números simples. MATLAB le permite aplicar formatos personalizados para mejorar la interpretación de los datos, como mostrar valores monetarios, porcentajes o limitar el número de decimales. Las funciones xtickformat y ytickformat son herramientas poderosas para esta tarea.
Puede usar formatos predefinidos (como 'usd' para dólares estadounidenses) o especificar un formato personalizado utilizando los especificadores de formato de C (como '%.1f' para un decimal flotante o '\xA3%.2f' para libras esterlinas con dos decimales, donde \xA3 es el carácter Unicode para el símbolo de la libra).
profit = [20 40 50 40 50 60 70 60 70 60 60 70 80 90]; stem(profit) xlim([0 15]) % Mostrar las etiquetas del eje Y como valores en dólares estadounidenses ytickformat('usd') % Formato personalizado: un decimal en el eje X, libras esterlinas en el eje Y xtickformat('%.1f') ytickformat('\xA3%.2f') El Desafío del Histograma: Marcas Finas con Etiquetas Espaciadas
Un escenario común, como el que usted describe con su histograma, es la necesidad de tener marcas de división muy detalladas para una mejor interpretación visual de la distribución (por ejemplo, cada 0.5 o 1.5 unidades), pero al mismo tiempo, solo querer etiquetas numéricas cada cierto intervalo mayor (por ejemplo, cada 5 o 10 unidades) para evitar la superposición y mantener la claridad. La clave para resolver este problema radica en comprender que xticklabels requiere una etiqueta para cada marca de división definida por xticks. Si no desea una etiqueta para una marca específica, simplemente use una cadena de caracteres vacía ('') en su lugar.
Aquí se explica cómo abordar este desafío:
- Defina todas las ubicaciones de las marcas de división que desea que aparezcan visualmente, incluso aquellas que no tendrán una etiqueta numérica.
- Cree un arreglo de celdas para las etiquetas que sea del mismo tamaño que el arreglo de ubicaciones de las marcas. Inicialice todas las celdas con cadenas vacías.
- Recorra el arreglo de ubicaciones de las marcas y, para cada marca que desee etiquetar, asigne su valor numérico (convertido a cadena) a la celda correspondiente en el arreglo de etiquetas.
% Ejemplo basado en su escenario de histograma % Generación de datos de ejemplo para simular Zint_data Zint_data = randn(1000,2) * 10 + 40; hINT = histogram(Zint_data(:,2), 'BinWidth', 0.5); title('Histograma Personalizado'); xlim([0 80]); % 1. Definir todas las ubicaciones de las marcas (cada 0.5 unidades) % Asegúrese de que el rango cubra sus datos, desde 0 hasta 80 allTickLocations = 0:0.5:80; xticks(allTickLocations); % 2. Crear un arreglo de celdas de etiquetas, inicialmente vacío para todas las marcas customLabels = cell(size(allTickLocations)); % 3. Llenar solo las etiquetas deseadas (cada 5 unidades) % Para cada ubicación de marca, compruebe si es un múltiplo de 5. % Usamos un pequeño valor epsilon para manejar imprecisiones de punto flotante for i = 1:length(allTickLocations) currentTickValue = allTickLocations(i); if abs(mod(currentTickValue, 5)) < 1e-9 || abs(mod(currentTickValue, 5) - 5) < 1e-9 customLabels{i} = num2str(currentTickValue); end end % Asignar las etiquetas personalizadas xticklabels(customLabels); % Si desea marcas menores visuales entre las mayores, puede activar XMinorTick ax = gca; % Obtener el objeto de ejes actual ax.XMinorTick = 'on'; % Esto solo añade marcas visuales, no etiquetas adicionales Este enfoque garantiza que todas sus marcas de división deseadas sean visibles, mientras que solo las etiquetas importantes se muestran, resolviendo el problema de la superposición y la ilegibilidad. La propiedad XMinorTick = 'on' simplemente añade marcas visuales más pequeñas entre las marcas principales; no se les pueden asignar etiquetas de texto individuales directamente como a las marcas principales.

Control Avanzado con Objetos Ruler
MATLAB crea un objeto "Ruler" para cada eje (X, Y y Z), que proporciona un control aún más granular sobre las propiedades de los ejes. Estos objetos son accesibles a través de las propiedades XAxis, YAxis y ZAxis del objeto Axes. El tipo de objeto Ruler depende del tipo de datos en el eje; para datos numéricos, MATLAB crea un objeto NumericRuler.
Al acceder a estos objetos, puede modificar propiedades específicas que no están directamente expuestas por las funciones xticks, xticklabels, etc. Por ejemplo, puede controlar el exponente mostrado en las etiquetas de los ejes para datos con un rango muy amplio, o ajustar el formato de las etiquetas de una manera más programática.
ax = gca; % Obtener el objeto de ejes actual ax.XAxis % Muestra las propiedades del objeto NumericRuler para el eje X Algunas propiedades útiles de un objeto NumericRuler incluyen:
Limits: El rango visible del eje.Scale: La escala del eje ('linear' o 'log').Exponent: El valor del exponente para las etiquetas (útil para notación científica).TickValues: El mismo vector que se usa conxticks.TickLabelFormat: El formato de las etiquetas, similar a lo que se usa conxtickformat.
Un uso práctico es ajustar el exponente cuando MATLAB muestra la notación científica. Por defecto, MATLAB puede elegir un exponente que no sea el más intuitivo. Puede modificarlo directamente:
x = linspace(0,5,1000); y = 100*exp(x).*sin(20*x); plot(x,y) ax = gca; ax.YAxis.Exponent = 2; % Cambia el exponente a 10^2 Si desea eliminar la notación exponencial por completo, simplemente establezca Exponent = 0.
Tabla de Funciones y Propiedades Clave para la Personalización de Ejes
| Función/Propiedad | Descripción | Ejemplo de Uso |
|---|---|---|
xticks, yticks, zticks | Establece las posiciones numéricas de las marcas de división principales. | xticks([0 10 20 30]) |
xticklabels, yticklabels, zticklabels | Asigna etiquetas de texto a las marcas de división principales. Requiere una celda de caracteres. | xticklabels({'Ene', 'Feb', 'Mar'}) |
xtickangle, ytickangle, ztickangle | Rota las etiquetas de los ejes para mejorar la legibilidad y evitar superposiciones. | xtickangle(45) |
xtickformat, ytickformat, ztickformat | Define el formato de visualización de las etiquetas numéricas (ej. moneda, decimales). | ytickformat('usd'), xtickformat('%.2f') |
ax.XAxis, ax.YAxis, ax.ZAxis | Acceso a los objetos Ruler para control avanzado de propiedades del eje (ej. Exponent, TickLabelFormat). | ax = gca; ax.YAxis.Exponent = 0; |
ax.XMinorTick, ax.YMinorTick | Activa o desactiva las marcas de división menores visuales entre las principales. | ax.XMinorTick = 'on' |
Preguntas Frecuentes (FAQ)
¿MATLAB ajusta automáticamente las etiquetas de los ejes?
Sí, MATLAB intenta ajustar automáticamente las ubicaciones y etiquetas de las marcas de división para que sean legibles y representativas. Sin embargo, estas configuraciones predeterminadas pueden no ser ideales para todos los conjuntos de datos o para las necesidades específicas de presentación, lo que hace que la personalización manual sea una herramienta esencial.
¿Cómo puedo tener muchas marcas de división visuales pero solo unas pocas etiquetas numéricas?
Esta es una necesidad común, especialmente en histogramas o gráficos con alta densidad de datos. La solución es usar xticks para definir todas las ubicaciones de las marcas de división que desea que aparezcan. Luego, utilice xticklabels con una celda de caracteres del mismo tamaño, donde solo las etiquetas que desea mostrar contengan texto, y el resto sean cadenas vacías (''). Consulte la sección "El Desafío del Histograma" para un ejemplo detallado.
¿Puedo usar texto enriquecido o símbolos griegos en mis etiquetas de eje?
Absolutamente. MATLAB admite el marcado TeX en las etiquetas de texto, lo que le permite incluir símbolos griegos (como \pi para π), subíndices, superíndices y otros formatos especiales. Simplemente incorpore la sintaxis TeX dentro de las cadenas de su celda de etiquetas (ej. {'\alpha', '\beta'}).
¿Cómo evito que las etiquetas de mis ejes se superpongan?
La superposición de etiquetas es un problema común con datos densos o etiquetas largas. La solución más efectiva es rotar las etiquetas utilizando las funciones xtickangle y ytickangle. Un ángulo de 45 grados suele ser un buen punto de partida para mejorar la legibilidad.
¿Cuál es la diferencia entre xticks y xticklabels?
xticks (y sus equivalentes yticks, zticks) define las posiciones numéricas exactas en el eje donde aparecerán las marcas de división. Por otro lado, xticklabels (y sus equivalentes) define el texto que se mostrará en esas posiciones. Son dos funciones complementarias que trabajan juntas para controlar la apariencia de las marcas de división y sus descripciones.
En resumen, dominar la personalización de las marcas de división y las etiquetas de los ejes en MATLAB es una habilidad invaluable para cualquier persona que trabale con visualización de datos. Desde ajustes básicos de posición y texto hasta el manejo de escenarios complejos como histogramas con marcas finas y etiquetas espaciadas, o el uso de objetos Ruler para un control avanzado, MATLAB proporciona las herramientas necesarias para transformar sus gráficos en narrativas visuales claras y efectivas. Una visualización bien diseñada no solo presenta datos, sino que cuenta una historia, y el control sobre sus ejes es fundamental para esa narrativa.
Si quieres conocer otros artículos parecidos a Dominando Marcas y Etiquetas de Ejes en MATLAB puedes visitar la categoría Librerías.
