FacetGrid em Seaborn

Manav Narula 15 fevereiro 2024
FacetGrid em Seaborn

O módulo seaborn é usado para visualização e criação de belos gráficos estatísticos em Python. Ele é baseado e usa a biblioteca matlplotlib. Às vezes, podemos encontrar uma situação para exibir vários gráficos de uma vez, o que dará melhor clareza na compreensão do conjunto de dados. Para tais situações, podemos usar a classe FacetGrid do módulo seaborn.

Este tutorial irá apresentar como usar a classe FacetGrid do módulo seaborn em Python.

A classe FacetGrid é usada para visualizar a relação entre a distribuição de dados com outros subconjuntos de dados, criando grades para vários gráficos. Ele plota o conjunto de dados na grade, especificando o eixo da linha e da coluna. É útil quando estamos trabalhando com um conjunto de dados complicado.

Diferentes plotagens de origem marinha como relplot(), lmplot() e catplot() usam essa classe por padrão.

Usamos o construtor seaborn.FacetGrid() para iniciar um objeto desta classe. Veja o seguinte código.

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(
    {
        "Quantity": [5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8],
        "Price": [9, 10, 15, 16, 13, 14, 15, 18, 11, 12, 14, 15, 16, 17, 18, 19],
        "Day": [1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2],
        "Product": [
            "A",
            "A",
            "A",
            "A",
            "B",
            "B",
            "B",
            "B",
            "A",
            "A",
            "A",
            "A",
            "B",
            "B",
            "B",
            "B",
        ],
    }
)

g = sns.FacetGrid(df, col="Product", row="Day")
g.map(sns.lineplot, "Price", "Quantity")

FacetGrid do mar

No exemplo acima, traçamos o preço dos diferentes produtos em diferentes quantidades ao longo de dois dias. Criamos uma grade usando o construtor seaborn.FacetGrid() e a inicializamos com o valor de linhas e colunas. Especificamos o gráfico e as variáveis ​​desejadas a serem traçados usando a função map(). Usamos um conjunto de dados relativamente simples e conseguimos alcançar o resultado desejado. Além disso, podemos usar um terceiro eixo denominado matiz nesta classe. Isso plota os dados com categorias diferentes no mesmo gráfico em cores diferentes.

Alteramos o código no exemplo mencionado anteriormente e adicionamos o parâmetro hue. Por exemplo,

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(
    {
        "Quantity": [5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8],
        "Price": [9, 10, 15, 16, 13, 14, 15, 18, 11, 12, 14, 15, 16, 17, 18, 19],
        "Day": [1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2],
        "Product": [
            "A",
            "A",
            "A",
            "A",
            "B",
            "B",
            "B",
            "B",
            "A",
            "A",
            "A",
            "A",
            "B",
            "B",
            "B",
            "B",
        ],
    }
)

g = sns.FacetGrid(df, col="Product", hue="Day")
g.map(sns.lineplot, "Price", "Quantity")
g.add_legend()

Seaborn FacetGrid com o parâmetro hue

Observe que o número total de plotagens também foi reduzido usando o parâmetro hue. A função add_legend() é usada para adicionar uma legenda na figura final.

Podemos ajustar a figura final usando muitos parâmetros e funções com esta classe. Por exemplo, os parâmetros height e aspect podem ser usados ​​para alterar o tamanho da figura final, a função set_titles() pode ser usada para adicionar um título para traçar em cada eixo, função set_xlabels() para alterar os rótulos dos eixos e muito mais.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn