fbpx
Sigmoidal
  • Home
  • CursosNOVO
  • Sobre Mim
  • Contato
Sem Resultado
Ver Todos Resultados
  • Home
  • CursosNOVO
  • Sobre Mim
  • Contato
Sem Resultado
Ver Todos Resultados
Sigmoidal
Sem Resultado
Ver Todos Resultados
Home Artigos Projetos

Como fazer gráficos rotulados em Python

ThalesFreitas por ThalesFreitas
janeiro 24, 2022
em Projetos, Python
2
Como fazer gráficos rotulados em Python
103
COMPARTILHAMENTOS
3.4k
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();
Tags: gráficos em pythongráficos rotulados
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

aprenda python do zero - curso gratuito
Carreira

Projeto Python: um plano à prova de desculpas

por Carlos Melo
outubro 3, 2022
Entrevista com Rodrigo Gianotto, CTO do Grupo Primo
Carreira

Entrevista com Rodrigo Gianotto, CTO do Grupo Primo

por Carlos Melo
julho 30, 2022
Projeto Python do Zero: evento 100% gratuito
Carreira

Projeto Python do Zero: evento 100% gratuito

por Carlos Melo
julho 19, 2022
Aprenda Python e se destaque no mercado
Artigos

Aprenda Python e se destaque no mercado

por Carlos Melo
julho 17, 2022
NFT e artes criadas por Inteligência Artificial

NFT e artes criadas por Inteligência Artificial

por Carlos Melo
junho 17, 2022
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 2

  1. Avatar Elisangela says:
    2 anos atrás

    Perfeito… Obrigada

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

      Muito obrigado pelo comentário!

      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 *

Destaques Sigmoidal

NFT e artes criadas por Inteligência Artificial

NFT e artes criadas por Inteligência Artificial

junho 17, 2022
Detector de Fadiga usando Python

Detector de Fadiga usando Python

outubro 6, 2020
Aprenda Python e se destaque no mercado

Aprenda Python e se destaque no mercado

julho 17, 2022
Especialização em Visão Computacional Especialização em Visão Computacional Especialização em Visão Computacional

Seguir

  • Camera Tracking, Reconstrução 3D e a Arte da Visão 🎥👁️‍🗨️

O “camera tracking” é uma técnica que permite a análise e reprodução do movimento da câmera em filmagens 2D. 

Esta análise fornece dados vitais sobre a posição e orientação da câmera ao longo do tempo, sendo essencial para a integração de elementos 3D virtuais em visuais 2D. 

A minha jornada acadêmica levou-me ao coração da engenharia de visão computacional, onde explorei tópicos cruciais como lens distortion, camera calibration e image processing. Dediquei-me a técnicas avançadas, abrangendo desde a utilização de filtros Gaussianos, conversão de imagens para grayscale até algoritmos de keypoint detection. 

No decorrer de meus estudos, tive a chance de trabalhar com métodos clássicos, como “Harris Corner Detection”, e também com abordagens mais contemporâneas como ORB, além de descritores como SIFT, SURF e BRISK.

Mas apesar da minha formação predominantemente técnica, centrada no mundo dos modelos quantitativos e da modelagem matemática, identifiquei um diferencial valioso na trilha da visão computacional.

🎨 Esse diferencial foi a capacidade de não se limitar apenas ao lado técnico. Ao contrário, busquei uma fusão entre a precisão técnica e a sensibilidade artística.

Compreendi que a verdadeira inovação surge quando se une o rigor técnico à visão criativa. Nessa intersecção, a arte e a ciência dançam juntas, produzindo resultados que são ao mesmo tempo precisos e emocionalmente impactantes.

Como o escritor A. D. Sertillanges expressou tão eloquentemente, nossa vocação como seres humanos exige que primeiro estejamos profundamente enraizados em nossa humanidade, viajando com confiança e solidez:

💬 “Toda ciência, quando cultivada isoladamente, não é apenas incompleta, mas também repleta de riscos.”

Serve como um lembrete constante de que dentro de cada tarefa computacional e linha de código existe uma miríade de histórias, prontas para serem reveladas e compartilhadas. 

#machinelearning #visãocomputacional
  • 🤖Você já testou essa ferramenta? 

Prece mentira, mas você pode gravar um vídeo seu agora mesmo, e subir nesse site para ele dublar para inglês e várias outras línguas! 🇺🇸🇪🇸🇧🇷🇩🇪

E não apenas isso! Ele sincroniza inclusive os seus lábios para ficar o mais real possível. 

O que você achou? Que tal testar agora mesmo e me mandar?

#machinelearning #inteligenciaartificial
  • ‘Eu nasci assim, eu cresci assim, vou sempre usar arquivos CSV…’ 🎶

Será mesmo? Se a síndrome de Gabriela te prende aos antigos e gigantes arquivos CSV, é hora de repensar! 🤔

Calma, não me entenda mal. Eu uso arquivos CSV para muitas coisas, mesmo! Mas permita-me apresentar um formato que já é bem conhecido pelos engenheiros de dados, mas que, por algum motivo, ainda não é muito famoso entre os cientistas de dados.

O principal problema do CSV é sua estrutura. Eles são armazenados como uma lista de linhas (conhecido como orientado a linhas), o que causa duas grandes complicações: eles são lentos para consultar e, para complicar ainda mais, SQL e CSV simplesmente não se dão bem.

Agora, entre em cena o Parquet: um formato orientado a colunas. Diferentemente dos CSVs, ele organiza seus dados por colunas, o que facilita e agiliza a consulta.

Além disso, é um formato de código aberto, licenciado sob Apache, o que o torna uma opção atrativa não apenas pela sua eficiência, mas também pela flexibilidade e transparência. Engenheiros de dados já se beneficiam das vantagens do Parquet há algum tempo, então por que os cientistas de dados não dariam uma chance também?

Se você é um cientista de dados e ainda não experimentou o Parquet, talvez seja o momento de se aventurar. E aí, já conhecia essa alternativa? Deixe seus comentários! 🚀

#machinelearning #datascience  #visaocomputacional
  • Eu não aprendi a estudar do dia para a noite.

Foram anos de aprimoramento e busca contínua por um método que me permitisse aprender qualquer coisa sozinho.

Nessa sequência de stories eu conto um pouco da minha trajetória, passando pela AFA, ITA e aprendizado de línguas. 

Se você ainda não tem o hábito da leitura, mas gostaria de aprender qualquer coisa rapidamente, como autodidata, você não pode perder a live de hoje. 

🔴AULA AO VIVO (hoje, às 20 horas)

✅Como criar uma rotina de estudo
✅Como criar resumos e notas de revisão
✅Como manter o foco e a concentração
✅Técnicas de Ultra-Aprendizado

Clique no link dos stories e ative a notificação da aula!
  • 📚Ao contrário do que o senso comum pode te induzir a pensar, você não pode querer apenas estudar livros técnicos. 

Ler e memorizar demandam a construção de múltiplas habilidades em diferentes dimensões. Afinal, você precisa crescer não apenas na vida profissional, mas também na humana, espiritual e familiar. 

No entanto, a escolha de livros errados podem prejudicar perigosamente a formação do conhecimento intelectual.

Por esse motivo, aqui vai uma sugestão de livros para aqueles que querem começar uma vida de estudos. 

E se você quiser aprender mais sobre como melhorar sua memória, elaborar resumos da maneira correta e manter o foco na leitura, mande uma mensagem por direct com a palavra “ESTUDO”. 

Depois que você enviar a palavra “estudo”, eu vou te encaminhar o link da aula exclusiva que eu farei sobre o assunto. 

Agora me diz, quais desses livros você já leu? Ou está na fila para leitura?

#leitura #estudos #machinelearning #computervision
  • ORB-SLAM é um sistema SLAM (Localização e Mapeamento Simultâneos) de última geração que utiliza uma combinação de métodos baseados em características e métodos diretos para alcançar desempenho em tempo real em diversas plataformas. Foi concebido por pesquisadores da Universidade de Zaragoza, Espanha, e agora é amplamente adotado tanto na academia quanto na indústria.

O nome ORB-SLAM deriva do seu uso de características Oriented FAST e Rotated BRIEF (ORB) para detectar e combinar pontos-chave em imagens. Essas características, juntamente com outras técnicas como fechamento de loop e otimização de pose, garantem uma localização e mapeamento robustos e precisos.

Graças à sua combinação de métodos baseados em características e diretos, juntamente com suas capacidades em tempo real e compatibilidade versátil de plataforma, ORB-SLAM destaca-se como um recurso inestimável para profissionais em visão computacional e robótica.

Ansioso para aprender como implementar o ORB-SLAM 3, desde sua instalação até a execução do sistema usando seus dados? Acesse o blog do sigmoidal e veja o tutorial com o passo a passo que eu preparei.

https://sigmoidal.ai

#visãocomputacional #machinelearning #slam #opencv
  • Filhos não são um direito, mas um dom de Deus. E hoje fomos abençoados com o nascimento da Bettina. 

Já te amamos muito, minha Pycotinha!
  • Sorria, você está sendo filmado (e analisado pela Visão Computacional)! Estimação de velocidade, fluxo óptico de pedestres e veículos, identificação de objetos abandonados, análise de comportamentos, cruzamento de dados com a base da polícia... quais outras possibilidades você enxerga?
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

  • Artigos
  • Blog
  • Carreira
  • Colunistas
  • Cursos
  • Data Science
  • Deep Learning
  • Destaques
  • Entrevistas
  • Inglês
  • Iniciantes
  • Inteligência Artificial
  • Livros
  • Machine Learning
  • Notícias
  • Outros
  • Projetos
  • Python
  • Teoria
  • Tutoriais
  • Visão Computacional
  • Youtube

Navegar por Tags

camera calibration cancer carreira cientista de dados cnn computer vision Cursos dados desbalanceados data science data science na prática decision tree deep learning gis gpt-3 healthcare image formation iniciantes jupyter kaggle keras machine learning matplotlib medicina mnist nft opencv pandas personal branding portfólio profissão python redes neurais redes neurais convolucionais regressão logística salário seaborn sklearn tensorflow titanic tutorial vagas visão computacional vídeo youtube árvore de decisão

© 2023 Sigmoidal - Aprenda Data Science e Python na prática.

Sem Resultado
Ver Todos Resultados
  • Home
  • Cursos de Visão Computacional, Data Science e Python
  • Artigos
  • YouTube
  • Sobre Mim
  • Contato

© 2023 Sigmoidal - Aprenda Data Science 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

Aprenda Python do Zero

50% Off

Oferta exclusiva de aniversário do Sigmoidal. Inscreva-se no curso Python do Zero hoje mesmo.

QUERO APROVEITAR O DESCONTO