Rotulando Ticks Usando Notação de Engenharia

Beginner

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

Introdução

Na visualização de dados, é essencial rotular os ticks nos eixos com precisão. O EngFormatter no Matplotlib é uma classe que permite rotular os ticks em um eixo usando notação de engenharia. A notação de engenharia é uma representação matemática de números que usa potências de dez com um múltiplo de três. É uma forma concisa de expressar números grandes ou pequenos que são difíceis de ler ou escrever na notação padrão. Neste laboratório, aprenderemos como rotular os ticks em um eixo usando notação de engenharia.

Dicas para a VM

Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário 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 você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.

Importar as Bibliotecas Necessárias

O primeiro passo é importar as bibliotecas necessárias. Neste laboratório, usaremos Matplotlib, NumPy e EngFormatter.

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import EngFormatter

Criar Dados Artificiais

Precisamos criar alguns dados artificiais para plotar. Neste laboratório, plotaremos o logaritmo da frequência (em Hz) contra o logaritmo da potência (em Watts). Usaremos a biblioteca numpy para gerar os dados.

## Fixing random state for reproducibility
prng = np.random.RandomState(19680801)

## Create artificial data to plot.
## The x data span over several decades to demonstrate several SI prefixes.
xs = np.logspace(1, 9, 100)
ys = (0.8 + 0.4 * prng.uniform(size=100)) * np.log10(xs)**2

Criar a Figura e os Subplots

Precisamos criar uma figura e subplots para exibir os dados. Neste laboratório, criaremos dois subplots, lado a lado.

## Figure width is doubled (2*6.4) to display nicely 2 subplots side by side.
fig, (ax0, ax1) = plt.subplots(nrows=2, figsize=(7, 9.6))
for ax in (ax0, ax1):
    ax.set_xscale('log')

Rotular os Ticks Usando Notação de Engenharia

Agora rotularemos os ticks no eixo x usando notação de engenharia. No primeiro subplot, usaremos as configurações padrão, e no segundo subplot, usaremos as opções places e sep para especificar o número de dígitos após a vírgula decimal e o separador entre o número e o prefixo/unidade.

## Demo of the default settings, with a user-defined unit label.
ax0.set_title('Full unit ticklabels, w/ default precision & space separator')
formatter0 = EngFormatter(unit='Hz')
ax0.xaxis.set_major_formatter(formatter0)
ax0.plot(xs, ys)
ax0.set_xlabel('Frequency')

## Demo of the options `places` (number of digit after decimal point) and
## `sep` (separator between the number and the prefix/unit).
ax1.set_title('SI-prefix only ticklabels, 1-digit precision & '
              'thin space separator')
formatter1 = EngFormatter(places=1, sep="\N{THIN SPACE}")  ## U+2009
ax1.xaxis.set_major_formatter(formatter1)
ax1.plot(xs, ys)
ax1.set_xlabel('Frequency [Hz]')

Exibir o Gráfico

Agora exibiremos o gráfico usando a função plt.show().

plt.tight_layout()
plt.show()

Resumo

Neste laboratório, aprendemos como rotular os ticks em um eixo usando notação de engenharia. Usamos a classe EngFormatter em Matplotlib para rotular os ticks no eixo x de um gráfico. Também aprendemos como criar subplots e personalizar os rótulos dos ticks usando as opções places e sep do EngFormatter. A notação de engenharia é uma maneira concisa e clara de expressar números grandes ou pequenos que são difíceis de ler ou escrever na notação padrão.