Posicionamento de Eixos (Spines) no Matplotlib

Beginner

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

Introdução

No Matplotlib, a posição dos eixos (spines) pode ser ajustada para personalizar a aparência de um gráfico. Este laboratório irá guiá-lo através do processo de ajuste das posições dos eixos no Matplotlib.

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

Nesta etapa, importaremos as bibliotecas necessárias para criar nossos gráficos.

import matplotlib.pyplot as plt
import numpy as np

Criar um gráfico básico

Nesta etapa, criaremos um gráfico básico para demonstrar as diferentes opções de posicionamento dos eixos (spines) no Matplotlib.

x = np.linspace(0, 2*np.pi, 100)
y = 2 * np.sin(x)

fig, ax_dict = plt.subplot_mosaic(
    [['center', 'zero'],
     ['axes', 'data']]
)
fig.suptitle('Posições dos eixos (Spine positions)')

ax = ax_dict['center']
ax.set_title("'center'")
ax.plot(x, y)
ax.spines[['left', 'bottom']].set_position('center')
ax.spines[['top', 'right']].set_visible(False)

ax = ax_dict['zero']
ax.set_title("'zero'")
ax.plot(x, y)
ax.spines[['left', 'bottom']].set_position('zero')
ax.spines[['top', 'right']].set_visible(False)

ax = ax_dict['axes']
ax.set_title("'axes' (0.2, 0.2)")
ax.plot(x, y)
ax.spines.left.set_position(('axes', 0.2))
ax.spines.bottom.set_position(('axes', 0.2))
ax.spines[['top', 'right']].set_visible(False)

ax = ax_dict['data']
ax.set_title("'data' (1, 2)")
ax.plot(x, y)
ax.spines.left.set_position(('data', 1))
ax.spines.bottom.set_position(('data', 2))
ax.spines[['top', 'right']].set_visible(False)

Definir um método para ajustar as localizações dos eixos (spines)

Nesta etapa, definiremos um método que ajusta a localização dos eixos (spines) com base nas localizações especificadas.

def adjust_spines(ax, spines):
    """
    Ajusta a localização dos eixos (spines) com base nas localizações especificadas.

    Parâmetros:
        ax (Axes): O objeto Axes do Matplotlib para ajustar os eixos (spines).
        spines (lista de str): As localizações desejadas dos eixos (spines). Opções válidas são 'left', 'right', 'top', 'bottom'.

    Retorna:
        None
    """
    for loc, spine in ax.spines.items():
        if loc in spines:
            spine.set_position(('outward', 10))  ## move the spine outward by 10 points
        else:
            spine.set_color('none')  ## don't draw the spine

    ## turn off ticks where there is no spine
    if 'left' in spines:
        ax.yaxis.set_ticks_position('left')
    else:
        ax.yaxis.set_ticks([])

    if 'bottom' in spines:
        ax.xaxis.set_ticks_position('bottom')
    else:
        ax.xaxis.set_ticks([])

Criar um gráfico usando o método adjust_spines

Nesta etapa, criaremos um gráfico usando o método adjust_spines para demonstrar como ajustar as localizações dos eixos (spines).

fig = plt.figure()

x = np.linspace(0, 2 * np.pi, 100)
y = 2 * np.sin(x)

ax = fig.add_subplot(2, 2, 1)
ax.plot(x, y, clip_on=False)
adjust_spines(ax, ['left'])

ax = fig.add_subplot(2, 2, 2)
ax.plot(x, y, clip_on=False)
adjust_spines(ax, [])

ax = fig.add_subplot(2, 2, 3)
ax.plot(x, y, clip_on=False)
adjust_spines(ax, ['left', 'bottom'])

ax = fig.add_subplot(2, 2, 4)
ax.plot(x, y, clip_on=False)
adjust_spines(ax, ['bottom'])

plt.show()

Resumo

Neste laboratório, aprendemos como ajustar as posições dos eixos (spines) no Matplotlib, definindo a posição dos eixos (spines) usando o método set_position e como definir um método para ajustar as localizações dos eixos (spines) com base nas localizações desejadas. Isso pode ser útil para personalizar a aparência dos gráficos e destacar recursos específicos.