fbpx
Sigmoidal
  • Home
  • Cursos
  • Pós-Graduação
  • Blog
  • Sobre Mim
  • Contato
Sem Resultado
Ver Todos Resultados
  • English
  • Home
  • Cursos
  • Pós-Graduação
  • Blog
  • Sobre Mim
  • Contato
Sem Resultado
Ver Todos Resultados
Sigmoidal
Sem Resultado
Ver Todos Resultados

Como fazer gráficos rotulados em Python

ThalesFreitas por ThalesFreitas
janeiro 24, 2022
em Python
4
158
COMPARTILHAMENTOS
5.3k
VIEWS
Publicar no LinkedInCompartilhar no FacebookCompartilhar no Whatsapp

Uma tarefa muito comum para os cientistas de dados é plotar gráficos em Python. Embora seja simples, essa atividade traz muitos insights sobre os dados e pode, até mesmo, revelar padrões que estão ocultos.

Existem diversas bibliotecas destinadas a visualização de dados: matplotlib, seaborn, pyplot, etc. O nosso objetivo aqui é ir além do simples .plot() e conseguir colocar os rótulos de dados de cada categoria.

Neste artigo, vamos misturar a seaborn com a matplotlib para mostrar que é possível usar várias bibliotecas ao mesmo tempo.

Se lembrarmos do Excel, essa tarefa de rotulação é muito simples. Já no Python, precisamos de um entendimento maior de como funcionam os objetos das bibliotecas.

Sem mais delongas, bora para o código! 🐍

O que você vai aprender por aqui:

  • Criar rótulos em gráficos de barras.
  • A estrutura de objetos do matplotlib.
  • Customização de gráficos.

Criando uma base de dados

Antes de tudo, precisamos criar uma base de dados qualquer. O que importa aqui é como vamos fazer os gráficos.

Neste caso, iremos representar um dataset que simula a quantidade vendida de frutas por uma empresa em um determinado período.

#criando o DataFrame
df = pd.DataFrame({'Frutas':['Laranja','Maçã','Melão','Kiwi','Banana'], # Nome das frutas
                   'Quantidade':[200,500,1200,600,800]})  # Quantidade vendida de cada fruta
#ajustando a ordem do DataFrame
df.sort_values(by='Quantidade', # ordenar pela quantidade
               ascending=False, # colocar na ordem contrária a ascendente (portanto, descendente <- maior para o menor)
               inplace=True, # atualizar o DataFrame com as mudanças
               ignore_index=True) #ignorar índice anterior

A forma mais comum de se plotar qualquer gráfico

Vamos criar um gráfico de barras na vertical utilizando o searborn. As frutas ficarão no eixo x (horizontal), já a quantidade no eixo y (vertical).

sns.barplot(x='Frutas',y='Quantidade',data=df); #plotando o gráfico. O ponto-e-vírgula (;) é para não retornar o texto do objeto
gráfico de barras na vertical utilizando o searborn

Até aqui, nada de mais.

Adicionando valor ao seu gráfico

E se alguém do departamento de Kiwis lhe perguntasse: Ok, estou entendendo completamente este gráfico. Porém, exatamente quantos Kiwis foram vendidos neste período? Sem uma resposta clara, você seria obrigado a voltar ao seu banco de dados e dar um retorno no dia seguinte.

Por causa deste tipo de problema, precisamos aprender a colocar rótulos nos gráficos. Entretanto, antes disso, vamos entender como funciona a criação de gráficos (e outros objetos) no matplotlib.

A imagem abaixo representa o que acontece de maneira geral dentro desta biblioteca.

Adicionando valor ao seu gráfico

Existem três objetos muito importantes: Figure, Axes e o gráfico que você quer criar. Pela imagem, é possível perceber que existe uma hierarquia entre eles.

O Figure é considerado o objeto top level que contém todos os elementos que serão plotados. Ele pode ter vários objetos do tipo Axes.

Já o Axes é o pano de fundo para o seu gráfico.

E, por fim, o último objeto é o gráfico (em si) que queremos criar.

Show! Com essas ideias em mente, vamos criar um Figure com apenas um Axes no matplotlib.

Para colocar o gráfico especificamente dentro do Axes criado, podemos adicionar o parâmetro (ax=ax) do searborn.

#criando a Figure e o Axes no matplotlib
fig, ax = plt.subplots(figsize=(8,6)) # figsize posso escolher o tamanho do meu figure
#criando novamente o gráfico
sns.barplot(x='Frutas',y='Quantidade',data=df,ax=ax) #criar o gráfico para colocar dentro do Axes
#plotando o gráfico
plt.tight_layout(); # <- plotando a Figure
gráfico dentro do Axes

Agora que entendemos os conceitos de objetos, podemos ir mais a fundo e adicionar títulos, retirar este retângulo preto (frame) que encobre nosso gráfico e muito mais! Acompanhe cada detalhe no código abaixo.

#criando a fig e o ax no matplotlib
fig, ax = plt.subplots(figsize=(8,6))
#criando novamente o gráfico
sns.barplot(x='Frutas', # colocando as categorias no eixo x
            y='Quantidade', # colocando os valores no eixo y
            data = df, # selecionando a base de dados
            ax=ax) # definindo o Axes criado
#modificação do fundo
ax.set_frame_on(False) # retirando o Frame (retângulo que encobre os gráficos)
#adicionando um título
ax.set_title('Quantidade de Frutas Vendidas', # texto do título
             loc='left', # posicionamento do título no Axes
             pad=30, # Distanciamento do título com outros objetos
             fontdict={'fontsize':20}, # Tamanho da fonte utilizado
             color='#3f3f4e') # cor da fonte em hexadecimal
#retirando o eixo y
ax.get_yaxis().set_visible(False) # retirando o eixo Y
#retirando os ticks do eixo x
ax.tick_params(axis='x', # escolhendo os ticks do eixo x
               length=0, # colocamos os ticks de tamanho zero, compare com os desenhos de cima
               labelsize=12, # tamanho da fonte para os eixos
               colors='dimgrey') # cor da fonte para o eixo x
#ajustando o título Frutas do eixo
ax.set_xlabel('Frutas', # título que queremos colocar na parte horizontal (em baixo)
              labelpad=10, # distanciamento deste título com outros objetos
              fontdict={'fontsize':14}, # tamanho da fonte utilizado
              color='#4c4c4c') # cor da fonte em hexadecimal
#plotando o gráfico
plt.tight_layout();
gráfico python

Certo, mas e os rótulos?

Nós precisamos colocar um rótulo em cima de cada retângulo. Estas regiões do Axes com características específicas são chamadas, no matplotlib, de patch. Existem vários tipos de patches: linhas, elipses, retângulos, etc.

matplotlib de patch

Vamos acessar os patches — regiões com características singulares — de nosso Axes por meio do método ax.patches() , e ver o que retorna:

<matplotlib.patches.Rectangle at 0x7fbf36afb450>,
<matplotlib.patches.Rectangle at 0x7fbf36afb750>,
<matplotlib.patches.Rectangle at 0x7fbf36afbc10>,
<matplotlib.patches.Rectangle at 0x7fbf36afbfd0>,
<matplotlib.patches.Rectangle at 0x7fbf36b04550>

Bingo! Ele retornou 5 linhas, que representam cada um de nossos retângulos. Nós precisamos acessar cada um destes retângulos para entender quais as medidas e descobrir qual a localização exata deles no Axes.

Se dermos uma olhada na documentação específica do Rectangle, encontraremos alguns métodos interessantes que podem nos ajudar:

  • ax.patches[0].get_height() <- retorna a altura do retângulo
  • ax.patches[0].get_x() <- retorna a coordenada x inicial (à esquerda) do retângulo
  • ax.patches[0].get_width() <- retorna a largura do retângulo

Obs.: Utilizando o índice [0], estamos acessando as propriedades do primeiro retângulo.

Agora vamos retornar ao nosso código e inserir esses métodos!

#colocando os rótulos
for retangulo in ax.patches: # for para cada retângulo
  # vamos inserir um texto no Axes
  ax.text(retangulo.get_x(), # posição x
          retangulo.get_height(), # posição y
          'texto') # texto que queremos colocar
gráfico python

Opa, já conseguimos enxergar algumas mudanças. O texto que colocamos ficou bem em cima de cada retângulo. Além disso, este texto ficou muito para a esquerda, pois escolhemos o ponto inicial de x com o retangulo.get_x() , ou seja, o ponto mais à esquerda de cada retângulo.

Vamos fazer alguns ajustes para colocar cada texto de uma forma que faça mais sentido visualmente!

#colocando os rótulos
for retangulo in ax.patches:
  ax.text(retangulo.get_x() + patch.get_width() / 2, # adicionando a metade da largura para ficar no centro
          retangulo.get_height() + 22, # adicionando um valor a mais na altura
          'texto',
          ha = 'center')
gráfico python

Quarto gráfico plotado após os conceitos de objetos

Conseguimos! O texto ficou na parte central do nosso retângulo. Além disso, adicionamos 22 unidades para gerar um espaço em branco entre cada rótulo e retângulo. Este número varia de gráfico para gráfico, e é uma boa você experimentar diferentes valores.

Agora é hora de colocar o texto correto: a quantidade de frutas. Para isso, vale lembrar que o método retangulo.get_height() retorna o valor da altura de cada retângulo.

As strings em Python possuem o método .format() . Com este método, conseguimos adicionar qualquer tipo de valor! Para isso, basta colocar "{}" no local que queremos inserir o texto e passar a variável que queremos como parâmetro do .format()

Exemplo: "{}".format(sua_variável)

Dê uma olhada no código abaixo e veja como foi feito para este caso.

#colocando os rótulos
for retangulo in ax.patches:
  ax.text(retangulo.get_x() + retangulo.get_width() / 2,
          retangulo.get_height() + 22,
          '{:,}'.format(int(retangulo.get_height())).replace(',','.'), # adicionando o texto da altura
          ha = 'center')
gráfico python

s de objetos

Sim, há bastante coisa na parte do texto. Porém, tudo aquilo é só firula para ficar mais visual… com separador de milhar, etc.

Um ponto importante aqui é que você pode adicionar símbolos ou outros textos de sua preferência. Você faria isso utilizando:

"R${}".format(sua_variavel_em_dinheiro) <- para exibir moedas

"{} milhões".format(sua_variável_em_milhões) <- para exibir milhões

Aplicando tudo o que foi visto e colocando um pouquinho de perfumaria

Vamos voltar ao nosso problema inicial.

Alguém do departamento de Kiwis queria saber a quantidade exata de kiwis vendidos. Poderíamos mostrar, como resposta, este gráfico, que traz os rótulos e dá uma evidencia maior à quantidade vendida de Kiwis.

gráfico python

Cumprimos nosso objetivo! 👊

Entendemos como colocar rótulos nos gráficos, a estrutura de objetos do matplotlib e que é possível customizar e ir além do simples .plot(). Se estiver interessado em como fazer o gráfico acima, eu coloquei o código aqui embaixo. Ademais, se quiser trocar uma ideia sobre Data Science no LinkedIn do Thales Ferraz, é só chamar!

#criando a fig e o ax no matplotlib
fig, ax = plt.subplots(figsize=(8,6))
#criando novamente o gráfico
sns.barplot(x='Frutas',y='Quantidade',data=df,ax=ax,palette=['grey','grey','#281e5d','grey','grey'])
#modificação do fundo
ax.set_frame_on(False)
#adicionando um título
ax.set_title('Quantidade de Frutas Vendidas',loc='left',pad=30,fontdict={'fontsize':20},color='#3f3f4e')
#retirando o eixo y
ax.get_yaxis().set_visible(False)
#retirnado os ticks do eixo x
ax.tick_params(axis='x',length=0,labelsize=12,colors='dimgrey')
#ajustando o título Frutas do eixo
ax.set_xlabel('Frutas',labelpad=10,fontdict={'fontsize':14},color='#4c4c4c')
#colocando os rótulos
for retangulo in ax.patches:
  ax.text(retangulo.get_x() + retangulo.get_width() / 2,
          retangulo.get_height() + 22,
          '{:,}'.format(int(retangulo.get_height())).replace(',','.'),
          ha = 'center',
          fontsize=18,color='grey')
#plotando o gráfico
plt.tight_layout();
Compartilhar11Compartilhar63Enviar
Post Anterior

A nossa mensagem de Feliz Natal para você!

Próximo Post

Gerando amostras para modelos de Deep learning no ArcGIS Pro

ThalesFreitas

ThalesFreitas

Relacionado Artigos

Carlos Melo e Sérgio Sacani – Ciência Sem Fim
Youtube

Carlos Melo e Sérgio Sacani – Ciência Sem Fim

por Carlos Melo
janeiro 16, 2025
Como equalizar histograma de imagens com OpenCV e Python
Python

Equalização de Histograma com OpenCV e Python

por Carlos Melo
julho 16, 2024
Como treinar YOLOv9 com dados (dataset) personalizados
Deep Learning

Como Treinar o YOLOv9 em um Dataset Personalizado

por Carlos Melo
fevereiro 29, 2024
YOLOv9 para detecção de Objetos
Deep Learning

YOLOv9: Aprenda a Detectar Objetos

por Carlos Melo
fevereiro 24, 2024
Depth Anything - Estimativa de Profundidade Monocular
Visão Computacional

Depth Anything: Como Criar Mapas de Profundidade

por Carlos Melo
fevereiro 21, 2024
Próximo Post
Gerando amostras para modelos de Deep learning no ArcGIS Pro

Gerando amostras para modelos de Deep learning no ArcGIS Pro

Comentários 4

  1. Elisangela says:
    3 anos atrás

    Perfeito… Obrigada

    Responder
    • Carlos Melo Carlos Melo says:
      2 anos atrás

      Muito obrigado pelo comentário!

      Responder
  2. Sandro says:
    2 anos atrás

    Boa noite, achei excepcional sua orientação! Mas gostaria de fazer meu gráfico na horizontal e já busquei aplicar a metodologia, porém sem êxito, você teria o exemplo com gráfico paralelo na horizontal

    Responder
    • Carlos Melo Carlos Melo says:
      4 meses atrás

      Para criar gráficos na horizontal, basta adicionar o parâmetro orientation=’horizontal’ ao usar bibliotecas como Matplotlib ou Seaborn. Exemplo com Matplotlib:

      plt.barh(x, y) # Use barh em vez de bar

      No Seaborn:

      sns.barplot(x=y, y=x, orient='h') # Defina o orient como 'h'

      Experimente e veja os resultados!

      Responder

Deixe um comentário Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Pós-Graduação em Data Science Pós-Graduação em Data Science Pós-Graduação em Data Science

Mais Populares

  • Introdução ao MediaPipe e Pose Estimation

    Introdução ao MediaPipe e Pose Estimation

    451 compartilhamentos
    Compartilhar 180 Tweet 113
  • Equalização de Histograma com OpenCV e Python

    112 compartilhamentos
    Compartilhar 45 Tweet 28
  • ORB-SLAM 3: Tutorial Completo para Mapeamento 3D e Localização em Tempo Real

    385 compartilhamentos
    Compartilhar 154 Tweet 96
  • Geometria da Formação de Imagens: Matrizes, Transformações e Sistemas de Coordenadas

    368 compartilhamentos
    Compartilhar 147 Tweet 92
  • Redes Neurais Convolucionais com Python

    92 compartilhamentos
    Compartilhar 37 Tweet 23
  • Em Alta
  • Comentários
  • Mais Recente
Como Tratar Dados Ausentes com Pandas

Como Tratar Dados Ausentes com Pandas

agosto 13, 2019
Como usar o DALL-E 2 para gerar imagens a partir de textos

Como usar o DALL-E 2 para gerar imagens a partir de textos

dezembro 25, 2022
Introdução ao MediaPipe e Pose Estimation

Introdução ao MediaPipe e Pose Estimation

julho 15, 2023

ORB-SLAM 3: Tutorial Completo para Mapeamento 3D e Localização em Tempo Real

abril 10, 2023
Como Analisar Ações da Bolsa com Python

Como Analisar Ações da Bolsa com Python

15
Setembro Amarelo: Análise do Suicídio no Brasil, com Data Science

Setembro Amarelo: Análise do Suicídio no Brasil, com Data Science

13
Como Aprender Data Science?

Como Aprender Data Science?

9
Qual o Cenário de Data Science no Brasil hoje?

Qual o Cenário de Data Science no Brasil hoje?

8
DeepSeek vazamento de dados de usuários

DeepSeek: Vazamento de dados expõe dados de usuários

fevereiro 1, 2025
DeepSeek R1 vs OpenAI o1 – Qual é o Melhor Modelo de IA

DeepSeek R1 vs OpenAI o1 – Qual é o Melhor Modelo de IA?

janeiro 25, 2025
Trump Anuncia Investimento de US$ 500 Bilhões em Infraestrutura de IA

Trump Anuncia Investimento de US$ 500 Bilhões em Infraestrutura de IA

janeiro 22, 2025
Trump revoga decreto de Biden sobre regulação de Inteligência Artificial

Trump revoga decreto de Biden sobre regulação de Inteligência Artificial

janeiro 21, 2025

Seguir

  • 🇺🇸 Green Card por Habilidade Extraordinária em Data Science e Machine Learning

Após nossa mudança para os EUA, muitas pessoas me perguntaram como consegui o Green Card tão rapidamente. Por isso, decidi compartilhar um pouco dessa jornada.

O EB-1A é um dos vistos mais seletivos para imigração, sendo conhecido como “The Einstein Visa”, já que o próprio Albert Einstein obteve sua residência permanente através desse processo em 1933.

Apesar do apelido ser um exagero moderno, é fato que esse é um dos vistos mais difíceis de conquistar. Seus critérios rigorosos permitem a obtenção do Green Card sem a necessidade de uma oferta de emprego.

Para isso, o aplicante precisa comprovar, por meio de evidências, que está entre os poucos profissionais de sua área que alcançaram e se mantêm no topo, demonstrando um histórico sólido de conquistas e reconhecimento.

O EB-1A valoriza não apenas um único feito, mas uma trajetória consistente de excelência e liderança, destacando o conjunto de realizações ao longo da carreira.

No meu caso específico, após escrever uma petição com mais de 1.300 páginas contendo todas as evidências necessárias, tive minha solicitação aprovada pelo USCIS, órgão responsável pela imigração nos Estados Unidos.

Fui reconhecido como um indivíduo com habilidade extraordinária em Data Science e Machine Learning, capaz de contribuir em áreas de importância nacional, trazendo benefícios substanciais para os EUA.

Para quem sempre me perguntou sobre o processo de imigração e como funciona o EB-1A, espero que esse resumo ajude a esclarecer um pouco mais. Se tiver dúvidas, estou à disposição para compartilhar mais sobre essa experiência! #machinelearning #datascience
  • 🚀Domine a tecnologia que está revolucionando o mundo.

A Pós-Graduação em Visão Computacional & Deep Learning prepara você para atuar nos campos mais avançados da Inteligência Artificial - de carros autônomos a robôs industriais e drones.

🧠 CARGA HORÁRIA: 400h
💻 MODALIDADE: EAD
📅 INÍCIO DAS AULAS: 29 de maio

Garanta sua vaga agora e impulsione sua carreira com uma formação prática, focada no mercado de trabalho.

Matricule-se já!

#deeplearning #machinelearning #visãocomputacional
  • Green Card aprovado! 🥳 Despedida do Brasil e rumo à nova vida nos 🇺🇸 com a família!
  • Haverá sinais… aprovado na petição do visto EB1A, visto reservado para pessoas com habilidades extraordinárias!

Texas, we are coming! 🤠
  • O que EU TENHO EM COMUM COM O TOM CRUISE??

Clama, não tem nenhuma “semana” aberta. Mas como@é quinta-feira (dia de TBT), olha o que eu resgatei!

Diretamente do TÚNEL DO TEMPO: Carlos Melo &Tom Cruise!
  • Bate e Volta DA ITÁLIA PARA A SUÍÇA 🇨🇭🇮🇹

Aproveitei o dia de folga após o Congresso Internacional de Astronáutica (IAC 2024) e fiz uma viagem “bate e volta” para a belíssima cidade de Lugano, Suíça.

Assista ao vlog e escreve nos comentários se essa não é a cidade mais linda que você já viu!

🔗 LINK NOS STORIES
  • Um paraíso de águas transparentes, e que fica no sul da Suíça!🇨🇭 

Conheça o Lago de Lugano, cercado pelos Alpes Suíços. 

#suiça #lugano #switzerland #datascience
  • Sim, você PRECISA de uma PÓS-GRADUAÇÃO em DATA SCIENCE.
  • 🇨🇭Deixei minha bagagem em um locker no aeroporto de Milão, e vim aproveitar esta última semana nos Alpes suíços!
  • Assista à cobertura completa no YT! Link nos stories 🚀
  • Traje espacial feito pela @axiom.space em parceria com a @prada 

Esse traje será usados pelos astronautas na lua.
para acompanhar as novidades do maior evento sobre espaço do mundo, veja os Stories!

#space #nasa #astronaut #rocket
  • INTERNATIONAL ASTRONAUTICAL CONGRESS - 🇮🇹IAC 2024🇮🇹

Veja a cobertura completa do evento nos DESTAQUES do meu perfil.

Esse é o maior evento de ESPAÇO do mundo! Eu e a @bnp.space estamos representando o Brasil nele 🇧🇷

#iac #space #nasa #spacex
  • 🚀 @bnp.space is building the Next Generation of Sustainable Rocket Fuel.

Join us in transforming the Aerospace Sector with technological and sustainable innovations.
  • 🚀👨‍🚀 Machine Learning para Aplicações Espaciais

Participei do maior congresso de Astronáutica do mundo, e trouxe as novidades e oportunidade da área de dados e Machine Learning para você!

#iac #nasa #spacex
  • 🚀👨‍🚀ACOMPANHE NOS STORIES

Congresso Internacional de Astronáutica (IAC 2024), Milão 🇮🇹
  • Projeto Aeroespacial do final de semana!👨‍🚀
Instagram Youtube LinkedIn Twitter
Sigmoidal

O melhor conteúdo técnico de Data Science, com projetos práticos e exemplos do mundo real.

Seguir no Instagram

Categorias

  • Aeroespacial
  • Artigos
  • Blog
  • Carreira
  • Cursos
  • Data Science
  • Deep Learning
  • Destaques
  • Entrevistas
  • IA Generativa
  • Livros
  • Machine Learning
  • Notícias
  • Python
  • Teoria
  • Tutoriais
  • Visão Computacional
  • Youtube

Navegar por Tags

camera calibration carreira chatgpt cientista de dados cnn computer vision Cursos dados desbalanceados data science data science na prática decision tree deep learning gpt-3 histograma IA generativa image formation inteligência artificial jupyter kaggle keras machine learning matplotlib mnist nft openai opencv overfitting pandas profissão python redes neurais redes neurais convolucionais regressão linear regressão logística salário scikit-learn seaborn sklearn tensorflow titanic tutorial visão computacional vídeo youtube árvore de decisão

© 2024 Sigmoidal - Aprenda Data Science, Visão Computacional e Python na prática.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In

Add New Playlist

Sem Resultado
Ver Todos Resultados
  • Home
  • Cursos
  • Pós-Graduação
  • Blog
  • Sobre Mim
  • Contato
  • English

© 2024 Sigmoidal - Aprenda Data Science, Visão Computacional e Python na prática.