1
resposta

Como adicionar os valores específicos de cada variável nos gráficos?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Neste gráfico, como eu faria para que fique explícito os valores de cada língua? Ex: que fique exposto que en são 4505, ou fr 70 e assim por diante.

1 resposta

Olá Heitor, tudo bem com você?

Para adicionar rótulos de dados em cada barra do gráfico, você pode usar o método plt.text(), que permite adicionar textos posicionados no gráfico, usando a seguinte sintaxe básica:

plt.text(x, y, texto, va, ha, fontsize)

Onde:

  • x e y definem a posição (coordenadas) onde o texto será exibido
  • texto é o conteúdo que será mostrado, como valores ou rótulos
  • Os parâmetros fontsize (tamanho da fonte), ha (alinhamento horizontal, como 'center') e va (alinhamento vertical, como 'top') ajudam a ajustar o texto ao gráfico

Para o seu código a implementação fica da seguinte forma:

for i, row in linguas_populares.iterrows():
    plt.text(
        row["Quantidade"],  # Posição no eixo x
        i,                 # Posição no eixo y
        f'{int(row["Quantidade"])}',  # Texto a ser exibido
        va='center',       # Alinhamento vertical
        ha='left',         # Alinhamento horizontal
        fontsize=8        # Tamanho da fonte
    )

No código acima, percorremos os dados do DataFrame linguas_populares usando iterrows() e adicionamos os valores de "Quantidade" como rótulos ao lado das barras com plt.text(). Os rótulos são posicionados no eixo X com base nos valores reais e no eixo Y com base na posição da barra (índice i). Além disso, usamos alinhamentos vertical e horizontal (va e ha) para centralizar e ajustar os textos ao lado das barras.

Deixo abaixo o seu código com essa implementação adicionada:

import matplotlib.pyplot as plt
import seaborn as sns 

linguas_filmes = tmdb["original_language"].value_counts().to_frame().reset_index()
linguas_filmes.columns = ["Língua", "Quantidade"]
linguas_populares = linguas_filmes.query('Quantidade >= 5')

ax = sns.barplot(data=linguas_populares, y="Língua", x="Quantidade")
plt.title('Línguas mais populares dentre os filmes')
plt.xscale('log')

# Adicionando rótulos de dados
for i, row in linguas_populares.iterrows():
    plt.text(
        row["Quantidade"],  # Posição no eixo x
        i,                 # Posição no eixo y
        f'{int(row["Quantidade"])}',  # Texto a ser exibido
        va='center',       # Alinhamento vertical
        ha='left',         # Alinhamento horizontal
        fontsize=8        # Tamanho da fonte
    )

plt.show()

imagem exibindo a execução do código acima, é apresentado um grafico de barras listando as linguagens populares nos filmes

Um spoiler do proximo curso da formação, na atividade adicionando anotações será apresentado com detalhes sobre como você pode fazer uso do método plt.text() em seus gráficos.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado