Plotagem de Setas com Matplotlib

Beginner

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

Introdução

Matplotlib é uma poderosa biblioteca de plotagem em Python. Ela oferece uma variedade de visualizações personalizáveis, como gráficos de linhas, gráficos de dispersão, gráficos de barras, histogramas e muito mais. Uma das visualizações que o Matplotlib oferece é o Arrow Plot (gráfico de setas). Os gráficos de setas são usados para codificar a "força" das setas, como probabilidades de transição em um modelo de Markov, usando o comprimento, a largura ou o alfa (opacidade) das setas.

Neste laboratório, aprenderemos como criar gráficos de setas usando Matplotlib. Usaremos a função make_arrow_graph() para plotar o gráfico de setas.

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 Bibliotecas e Definir a Função

O primeiro passo é importar as bibliotecas necessárias e definir a função make_arrow_graph(). Esta função recebe vários parâmetros, como os eixos, dados, tamanho, exibição, forma, max_arrow_width, arrow_sep, alfa, normalize_data, ec, labelcolor e kwargs. Ela usa esses parâmetros para criar um gráfico de setas.

## Import libraries
import itertools
import matplotlib.pyplot as plt
import numpy as np

## Define the function
def make_arrow_graph(ax, data, size=4, display='length', shape='right',
                     max_arrow_width=0.03, arrow_sep=0.02, alpha=0.5,
                     normalize_data=False, ec=None, labelcolor=None,
                     **kwargs):
    """
    Makes an arrow plot.

    Parameters
    ----------
    ax
        The axes where the graph is drawn.
    data
        Dict with probabilities for the bases and pair transitions.
    size
        Size of the plot, in inches.
    display : {'length', 'width', 'alpha'}
        The arrow property to change.
    shape : {'full', 'left', 'right'}
        For full or half arrows.
    max_arrow_width : float
        Maximum width of an arrow, in data coordinates.
    arrow_sep : float
        Separation between arrows in a pair, in data coordinates.
    alpha : float
        Maximum opacity of arrows.
    **kwargs
        `.FancyArrow` properties, e.g. *linewidth* or *edgecolor*.
    """

    ## code block

Definir os Dados e Plotar o Gráfico de Setas

O segundo passo é definir os dados e plotar o gráfico de setas usando a função make_arrow_graph(). Definiremos os dados como um dicionário com probabilidades para as bases e transições de pares. Também definiremos o tamanho do gráfico como 4 e normalizaremos os dados.

## Define the data
data = {
    'A': 0.4, 'T': 0.3, 'G': 0.6, 'C': 0.2,
    'AT': 0.4, 'AC': 0.3, 'AG': 0.2,
    'TA': 0.2, 'TC': 0.3, 'TG': 0.4,
    'CT': 0.2, 'CG': 0.3, 'CA': 0.2,
    'GA': 0.1, 'GT': 0.4, 'GC': 0.1,
}

## Plot the arrow graph
size = 4
fig = plt.figure(figsize=(3 * size, size), layout="constrained")
axs = fig.subplot_mosaic([["length", "width", "alpha"]])

for display, ax in axs.items():
    make_arrow_graph(
        ax, data, display=display, linewidth=0.001, edgecolor=None,
        normalize_data=True, size=size)

plt.show()

Personalizar o Gráfico de Setas

O terceiro passo é personalizar o gráfico de setas. Podemos alterar a propriedade da seta a ser exibida usando o parâmetro display. Também podemos alterar a forma da seta usando o parâmetro shape. Podemos ajustar a largura e a separação das setas usando os parâmetros max_arrow_width e arrow_sep, respectivamente. Podemos alterar a transparência das setas usando o parâmetro alpha. Também podemos alterar a cor do rótulo usando o parâmetro labelcolor.

## Plot the arrow graph with customizations
size = 4
fig = plt.figure(figsize=(3 * size, size), layout="constrained")
axs = fig.subplot_mosaic([["length", "width", "alpha"]])

for display, ax in axs.items():
    make_arrow_graph(
        ax, data, display=display, linewidth=0.001, edgecolor=None,
        normalize_data=True, size=size, shape='full', max_arrow_width=0.05,
        arrow_sep=0.03, alpha=0.7, labelcolor='white')

plt.show()

Interpretar o Gráfico de Setas

O quarto passo é interpretar o gráfico de setas. O comprimento, a largura e a opacidade das setas representam a força da seta. O gráfico de setas pode ser usado para codificar a "força" da seta, como as probabilidades de transição em um modelo de Markov, usando o comprimento, a largura ou o alfa (opacidade) da seta. Os rótulos nas setas representam as probabilidades para as bases e as transições de pares.

Resumo

Neste laboratório, aprendemos como criar gráficos de setas usando Matplotlib. Usamos a função make_arrow_graph() para plotar o gráfico de setas. Personalizamos o gráfico de setas alterando a propriedade da seta a ser exibida, alterando a forma da seta, ajustando a largura e a separação das setas, alterando a transparência das setas e alterando a cor do rótulo. Também interpretamos o gráfico de setas, entendendo que o comprimento, a largura e a opacidade das setas representam a força da seta, e os rótulos nas setas representam as probabilidades para as bases e as transições de pares.