Técnicas de transformación de ejes en Matplotlib

PythonPythonBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Matplotlib es una biblioteca de Python utilizada para la visualización de datos. Permite a los usuarios crear una amplia variedad de gráficos, diagramas y gráficas. Una de las características clave de Matplotlib es su capacidad para aplicar transformaciones de escala a los ejes. Esto permite una mayor flexibilidad en la presentación de datos, especialmente cuando se tratan números muy grandes o muy pequeños. En este laboratorio, aprenderemos cómo aplicar diversas transformaciones de escala a los ejes utilizando Matplotlib.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje su retroalimentación después de la sesión y resolveremos rápidamente el problema para usted.

Importar bibliotecas y generar datos

Primero, necesitamos importar las bibliotecas necesarias y generar algunos datos para graficar. En este ejemplo, usaremos una distribución normal para generar datos para el eje y.

import matplotlib.pyplot as plt
import numpy as np

## Fixing random state for reproducibility
np.random.seed(19680801)

## make up some data in the interval ]0, 1[
y = np.random.normal(loc=0.5, scale=0.4, size=1000)
y = y[(y > 0) & (y < 1)]
y.sort()
x = np.arange(len(y))

Crear un gráfico con escala lineal

El primer tipo de transformación de escala que exploraremos es la lineal. Esta es la escala predeterminada utilizada en Matplotlib. Para crear un gráfico con escala lineal, usamos el método set_yscale() y le pasamos la cadena 'linear'. También agregamos un título y una cuadrícula al gráfico.

## linear
plt.plot(x, y)
plt.yscale('linear')
plt.title('Linear Scale')
plt.grid(True)

Crear un gráfico con escala logarítmica

El siguiente tipo de transformación de escala que exploraremos es la logarítmica. Para crear un gráfico con escala logarítmica, usamos el método set_yscale() y le pasamos la cadena 'log'. También agregamos un título y una cuadrícula al gráfico.

## log
plt.plot(x, y)
plt.yscale('log')
plt.title('Logarithmic Scale')
plt.grid(True)

Crear un gráfico con escala logarítmica simétrica

El tercer tipo de transformación de escala que exploraremos es la logarítmica simétrica. Este tipo de escala es útil cuando se tratan datos que contienen valores positivos y negativos. Para crear un gráfico con escala logarítmica simétrica, usamos el método set_yscale() y le pasamos la cadena 'symlog'. También establecemos el parámetro linthresh en 0.02 para especificar el rango de valores alrededor de cero que se escalarán linealmente. También agregamos un título y una cuadrícula al gráfico.

## symmetric log
plt.plot(x, y - y.mean())
plt.yscale('symlog', linthresh=0.02)
plt.title('Symmetrical Logarithmic Scale')
plt.grid(True)

Crear un gráfico con escala logit

El cuarto tipo de transformación de escala que exploraremos es la logit. Este tipo de escala es útil cuando se tratan datos que están limitados entre 0 y 1. Para crear un gráfico con escala logit, usamos el método set_yscale() y le pasamos la cadena 'logit'. También agregamos un título y una cuadrícula al gráfico.

## logit
plt.plot(x, y)
plt.yscale('logit')
plt.title('Logit Scale')
plt.grid(True)

Crear un gráfico con escala personalizada

El último tipo de transformación de escala que exploraremos es la personalizada. Esto nos permite definir nuestras propias funciones directas e inversas para la transformación de escala. En este ejemplo, definiremos una función personalizada para calcular la raíz cuadrada de los datos. Para crear un gráfico con escala personalizada, usamos el método set_yscale() y le pasamos la cadena 'function'. También definimos las funciones forward() e inverse() y las pasamos como argumentos al parámetro functions. También agregamos un título y una cuadrícula al gráfico.

## Función x**(1/2)
def forward(x):
    return x**(1/2)

def inverse(x):
    return x**2

plt.plot(x, y)
plt.yscale('function', functions=(forward, inverse))
plt.title('Custom Scale')
plt.grid(True)

Crear un gráfico con escala de transformación de Mercator

Como bono, también crearemos un gráfico usando la función de transformación de Mercator. Esta no es una función integrada en Matplotlib, pero podemos definir nuestras propias funciones directas e inversas para crear un gráfico con escala de transformación de Mercator. En este ejemplo, definiremos las funciones forward() e inverse() para la transformación de Mercator. También agregamos un título y una cuadrícula al gráfico.

## Función de transformación de Mercator
def forward(a):
    a = np.deg2rad(a)
    return np.rad2deg(np.log(np.abs(np.tan(a) + 1.0 / np.cos(a))))

def inverse(a):
    a = np.deg2rad(a)
    return np.rad2deg(np.arctan(np.sinh(a)))

t = np.arange(0, 170.0, 0.1)
s = t / 2.

plt.plot(t, s, '-', lw=2)
plt.yscale('function', functions=(forward, inverse))
plt.title('Mercator Transform Scale')
plt.grid(True)
plt.xlim([0, 180])

Resumen

En este laboratorio, aprendimos cómo aplicar diversas transformaciones de escala a los ejes usando Matplotlib. Exploramos las transformaciones de escala lineal, logarítmica, logarítmica simétrica, logit, personalizada y de transformación de Mercator. Al aplicar estas transformaciones de escala, podemos visualizar mejor datos que contienen números muy grandes o muy pequeños, así como datos que contienen valores positivos y negativos.