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.
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.
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á exibidotexto
é o conteúdo que será mostrado, como valores ou rótulosfontsize
(tamanho da fonte), ha
(alinhamento horizontal, como 'center') e va
(alinhamento vertical, como 'top') ajudam a ajustar o texto ao gráficoPara 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()
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