Técnicas de Transformação de Eixos no Matplotlib

Beginner

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

Introdução

Matplotlib é uma biblioteca Python utilizada para visualização de dados. Permite aos utilizadores criar uma vasta gama de gráficos, diagramas e plots. Uma das principais características do Matplotlib é a sua capacidade de aplicar transformações de escala aos eixos. Isto permite uma maior flexibilidade na apresentação de dados, especialmente quando se lida com números muito grandes ou muito pequenos. Neste laboratório, aprenderemos como aplicar várias transformações de escala aos eixos usando Matplotlib.

Dicas para a VM

Após a inicialização da VM, clique no canto superior esquerdo para mudar para o separador Notebook para aceder ao Jupyter Notebook para praticar.

Por vezes, poderá ter de aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se tiver problemas durante a aprendizagem, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para si.

Importar Bibliotecas e Gerar Dados

Primeiro, precisamos importar as bibliotecas necessárias e gerar alguns dados para plotar. Neste exemplo, usaremos uma distribuição normal para gerar dados para o eixo 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))

Criar um Gráfico de Escala Linear

O primeiro tipo de transformação de escala que exploraremos é a linear. Esta é a escala padrão utilizada no Matplotlib. Para criar um gráfico de escala linear, usamos o método set_yscale() e passamos a string 'linear'. Também adicionamos um título e uma grelha ao gráfico.

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

Criar um Gráfico de Escala Logarítmica

O próximo tipo de transformação de escala que exploraremos é a logarítmica. Para criar um gráfico de escala logarítmica, usamos o método set_yscale() e passamos a string 'log'. Também adicionamos um título e uma grelha ao gráfico.

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

Criar um Gráfico de Escala Logarítmica Simétrica

O terceiro tipo de transformação de escala que exploraremos é a logarítmica simétrica. Este tipo de escala é útil ao lidar com dados que contêm valores positivos e negativos. Para criar um gráfico de escala logarítmica simétrica, usamos o método set_yscale() e passamos a string 'symlog'. Também definimos o parâmetro linthresh para 0.02 para especificar a faixa de valores em torno de zero que serão escalados linearmente. Também adicionamos um título e uma grelha ao gráfico.

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

Criar um Gráfico de Escala Logit

O quarto tipo de transformação de escala que exploraremos é a logit. Este tipo de escala é útil ao lidar com dados que são limitados por 0 e 1. Para criar um gráfico de escala logit, usamos o método set_yscale() e passamos a string 'logit'. Também adicionamos um título e uma grelha ao gráfico.

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

Criar um Gráfico de Escala Personalizada

O tipo final de transformação de escala que exploraremos é a personalizada (custom). Isso nos permite definir nossas próprias funções forward e inverse para a transformação da escala. Neste exemplo, definiremos uma função personalizada para calcular a raiz quadrada dos dados. Para criar um gráfico de escala personalizada, usamos o método set_yscale() e passamos a string 'function'. Também definimos as funções forward() e inverse() e as passamos como argumentos para o parâmetro functions. Também adicionamos um título e uma grelha ao gráfico.

## Function 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)

Criar um Gráfico de Escala com Transformação Mercator

Como um bônus, também criaremos um gráfico usando a função de transformação Mercator. Esta não é uma função embutida no Matplotlib, mas podemos definir nossas próprias funções forward e inverse para criar um gráfico de escala com transformação Mercator. Neste exemplo, definiremos as funções forward() e inverse() para a transformação Mercator. Também adicionamos um título e uma grelha ao gráfico.

## Function Mercator transform
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])

Resumo

Neste laboratório, aprendemos como aplicar várias transformações de escala aos eixos usando Matplotlib. Exploramos transformações de escala linear, logarítmica, logarítmica simétrica, logit, personalizada (custom) e Mercator. Ao aplicar essas transformações de escala, podemos visualizar melhor dados que contêm números muito grandes ou muito pequenos, bem como dados que contêm valores positivos e negativos.