curso
Gráfico de barras Python: Domine as técnicas básicas e mais avançadas
Neste artigo, darei a você uma visão geral dos gráficos de barras em Python usando as bibliotecas mais conhecidas: Matplotlib, Seaborn, Plotly, Plotnine e Pandas. Você pode observar os recursos visuais e escolher a biblioteca que mais lhe agrada. Para cada método, começarei com os conceitos básicos de criação de gráficos de barras simples e, em seguida, passarei gradualmente para as técnicas de personalização.
Serei o mais abrangente e claro possível, mas lembre-se de que, na análise de dados e na ciência de dados, os gráficos de barras são apenas uma coisa. Para ter uma visão ampla e praticar com conjuntos de dados reais, obter uma certificação muito cobiçada e iniciar uma carreira na área, inscreva-se hoje mesmo em nosso curso de carreira de Cientista de Dados Associado em Python.
Aprenda Python do zero
Maneiras de criar um gráfico de barras em Python
Vamos dar uma olhada em como criar e personalizar gráficos de barras usando algumas das bibliotecas Python mais populares. Cada biblioteca oferece recursos exclusivos e diferentes níveis de personalização.
Criar um gráfico de barras com o Matplotlib
Começarei com o Matplotlib, que é uma biblioteca de plotagem fundamental em Python que tem muitas opções de personalização.
Gráficos de barras básicos
Para começar a usar o Matplotlib, você precisa importar as bibliotecas necessárias. O módulo pyplot
do Matplotlib fornece a funçãos para a criação de gráficos. Neste exemplo, usaremos alguns dados de amostra que mostram o número de pessoas que preferem diferentes bibliotecas de visualização. Aqui, a lista library
contém os nomes das bibliotecas, que aparecem como rótulos no eixo x, e a lista chosen_by
contém o número correspondente de entusiastas, exibidos como alturas de barra no eixo y.
import matplotlib.pyplot as plt
# Number of preferences for different libraries
library = ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine']
chosen_by = [2500, 1800, 3000, 2200]
Para criar um gráfico de barras verticais, você precisa chamar a função plt.bar()
com os nomes das bibliotecas e os dados de preferência. Estou escolhendo a cor como skyblue
. As funções plt.xlabel()
, plt.ylabel()
e plt.title()
adicionam rótulos ao eixo x e ao eixo y e definem um título para o gráfico. Por fim, o site plt.show()
exibe o gráfico.
# Vertical Bar Plot
plt.bar(library, chosen_by, color='skyblue')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Which Visualization Library Do People Prefer?')
plt.show()
Da mesma forma, você pode criar um gráfico de barras horizontais usando a função plt.barh()
. Para isso, usarei uma cor verde-clara para as barras.
# Horizontal Bar Plot
plt.barh(library, chosen_by, color='lightgreen')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Which Visualization Library Do People Prefer?')
plt.show()
Personalizações avançadas
O Matplotlib permite uma ampla gama de personalizações, como adicionar anotações e personalizar rótulos, títulos e legendas de eixos. Por exemplo, você pode adicionar anotações a cada barra usando a função plt.text()
, que coloca o texto nas coordenadas especificadas.
plt.bar(library, chosen_by, color='skyblue')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Which Visualization Library Do People Prefer?')
# Adding annotations
for i, value in enumerate(chosen_by):
plt.text(i, value + 5, str(value), ha='center')
plt.show()
No código acima, plt.text()
é usado para exibir o número de entusiastas acima de cada barra. A função enumerate()
fornece o índice e o valor de cada barra, para que o texto seja posicionado corretamente.
Gráficos de barras agrupados e empilhados
Para criar gráficos de barras agrupadas e empilhadas com o Matplotlib, você pode usar parâmetros adicionais para representar várias categorias, como diferentes regiões ou dados demográficos. Suponha que você tenha dados sobre a popularidade das bibliotecas de visualização em diferentes regiões. Para gráficos de barras agrupadas, você define conjuntos de dados separados para cada região e usa o site bar_width
para controlar o espaçamento e o alinhamento das barras, colocando cada grupo lado a lado para facilitar a comparação.
import numpy as np
# Define library names
library = ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine']
# Number of Enthusiasts for different regions
enthusiasts_north = [2000, 1500, 2500, 2000]
enthusiasts_south = [1500, 1300, 2000, 1800]
bar_width = 0.35
x = np.arange(len(library))
# Grouped Bar Plot
plt.bar(x - bar_width/2, enthusiasts_north, bar_width, label='North Region', color='skyblue')
plt.bar(x + bar_width/2, enthusiasts_south, bar_width, label='South Region', color='lightgreen')
# Adding labels and title
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Regional Preferences for Visualization Libraries (Grouped)')
plt.xticks(x, library)
plt.legend(title='Regions')
plt.show()
Neste exemplo, a linha x = np.arange(len(library))
cria uma matriz de posições para as barras. A função plt.bar()
é usada duas vezes para criar as barras de cada região, e a função plt.xticks()
define os rótulos no eixo x. A função plt.legend()
exibe uma legenda para diferenciar as regiões.
Para um gráfico de barras empilhadas, você pode usar o parâmetro bottom
para empilhar um conjunto de dados sobre o outro. Veja como você pode visualizar o número de entusiastas de diferentes regiões empilhados para cada biblioteca.
# Define library names
library = ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine']
# Number of Enthusiasts for different regions
enthusiasts_north = [2000, 1500, 2500, 2000]
enthusiasts_south = [1500, 1300, 2000, 1800]
x = np.arange(len(library))
# Stacked Bar Plot
plt.bar(x, enthusiasts_north, label='North Region', color='skyblue')
plt.bar(x, enthusiasts_south, bottom=enthusiasts_north, label='South Region', color='lightcoral')
# Adding labels and title
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Regional Preferences for Visualization Libraries (Stacked)')
plt.legend()
plt.show()
Nesse gráfico de barras empilhadas, enthusiasts_south
representa os dados para entusiastas na região Sul, enquanto enthusiasts_north
é usado como dados de base para a região Norte. A função plt.bra()
é chamada uma vez para criar as barras da região norte e, em seguida, novamente para empilhar as barras da região sul no topo.
Você pode conferir nosso curso de Introdução à visualização de dados com Matplotlib para obter uma explicação mais detalhada sobre como usar a biblioteca Matplotlib Python. Você também pode consultar nossa Folha de dicas do Matplotlib, que divide o processo em seis etapas básicas.
Criando gráficos de barras com o Seaborn
O Seaborn é uma biblioteca de visualização desenvolvida com base no Matplotlib que simplifica a criação de gráficos de barras muito bonitos.
Gráficos de barras básicos
A função barplot()
do Seaborn facilita a criação de gráficos de barras básicos com o mínimo de código. Primeiro, importe a biblioteca Seaborn e crie um dicionário.
import seaborn as sns
data = {'Library': library, 'Chosen by': chosen_by}
Em seguida, use a função sns.barplot()
para criar o gráfico de barras, especificando as variáveis x e y e a fonte de dados. Aqui, estou usando a paleta de cores viridis
.
sns.barplot(x='Library', y='Chosen by', data=data, palette='viridis')
plt.title('Which Visualization Library Do People Prefer?')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()
Você pode decidir não adicionar um valor para palette
e obterá uma cor uniforme no gráfico ou, melhor ainda, atribuir uma cor ao gráfico de barras. Nesse caso, usarei um hexcode:
sns.barplot(x='Library', y='Chosen by', data=data, color=’#5EB1FF’)
plt.title('Which Visualization Library Do People Prefer?')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()
Personalização avançada
O Seaborn também permite, é claro, amplas opções de personalização, incluindo cores e anotações. Por exemplo, você pode adicionar anotações ao gráfico de barras da mesma forma que fez no Matplotlib.
# Customized Bar Plot
sns.barplot(x='Library', y='Chosen by', data=data, palette='viridis')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.title('Which Visualization Library Do People Prefer?')
# Adding annotations
for i, value in enumerate(chosen_by):
plt.text(i, value + 5, str(value), ha='center')
plt.show()
Neste exemplo, o parâmetro palette='viridis'
altera a paleta de cores das barras, e a função plt.text()
adiciona anotações a cada barra.
Você pode conferir nosso curso Introduction to Data Visualization with Seaborn para obter muito mais detalhes. Para deixar seu gráfico de barras Seaborn especialmente bonito, use nossa paleta de cores Seaborn Color Palette: Quick Guide to Picking Colors (Guia rápido para escolher cores) para você ter algumas boas ideias.
Criando gráficos de barras com o Plotly
A seguir, você encontrará o Plotly, uma biblioteca conhecida por criar visualizações interativas e dinâmicas, incluindo gráficos de barras.
Gráficos de barras básicos
Para criar um gráfico de barras básico com o Plotly, você deve usar o módulo graph_objects
. Podemos importar o módulo necessário e criar um gráfico de barras usando uma cor azul celeste para as barras.
import plotly.graph_objects as go
fig = go.Figure(go.Bar(x=library, y=chosen_by, marker_color='skyblue'))
fig.update_layout(title='Which Visualization Library Do People Prefer?', xaxis_title='Visualization Library', yaxis_title='Number of Enthusiasts')
fig.show()
Personalização avançada
O Plotly oferece maneiras de aprimorar a interatividade e a aparência dos gráficos de barras. Por exemplo, você pode adicionar anotações às barras usando a função fig.add_annotation()
.
fig = go.Figure(go.Bar(x=library, y=chosen_by, marker_color='skyblue'))
fig.update_layout(title='Which Visualization Library Do People Prefer?', xaxis_title='Visualization Library', yaxis_title='Number of Enthusiasts')
# Adding annotations
for i, value in enumerate(chosen_by):
fig.add_annotation(x=library[i], y=value, text=str(value), showarrow=False, yshift=10)
fig.show()
Gráficos de barras dinâmicos e interativos
O Plotly pode criar gráficos de barras dinâmicos que são atualizados em tempo real, o que os torna ideais para painéis de controle. Usando o Plotly Express, uma interface de alto nível para o Plotly, você pode criar gráficos de barras interativos com o mínimo de código.
import plotly.express as px
# Using a sample dataset from Plotly
df = px.data.gapminder().query("year == 2007")
fig = px.bar(df, x='continent', y='pop', color='continent', hover_name='country', title='Population by Continent in 2007')
fig.show()
Neste exemplo, a função px.data.gapminder()
carrega um conjunto de dados de amostra do Plotly. A função px.bar()
cria um gráfico de barras interativo com as variáveis x e y especificadas, a cor, o nome do hover e o título. Temos um curso detalhado aqui na DataCammp se você quiser saber mais: Introdução à visualização de dados com o Plotly.
Criando gráficos de barras com o Plotnine
O Plotnine é uma implementação da gramática de gráficos em Python, inspirada no ggplot2 do R. Ele permite uma maneira declarativa de criar gráficos complexos combinando diferentes elementos de gráficos.
Gráficos de barras básicos
Para começar a usar o Plotnine, importe as bibliotecas necessárias e crie um DataFrame. Em seguida, defina um objeto ggplot
, adicione uma camada geom_bar
e especifique a estética.
from plotnine import ggplot, aes, geom_bar, labs
import pandas as pd
# Number of preferences for different libraries
data = pd.DataFrame({'Library': ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine'],
'Chosen by': [2500, 1800, 3000, 2200]})
# Basic Bar Plot
ggplot(data, aes(x='Library', y='Chosen by')) + geom_bar(stat='identity', fill='skyblue') + labs(title='Which Visualization Library Do People Prefer?', x='Visualization Library', y='Number of Enthusiasts')
Neste exemplo, aes(x='Library', y='Chosen by')
configura a estética x e y para o gráfico. A parte geom_bar(stat='identity', fill='skyblue')
cria um gráfico de barras com uma cor de preenchimento azul celeste.
Personalização avançada
Você pode personalizar usando a abordagem em camadas do Plotnine. Você pode adicionar anotações, rótulos de eixo, títulos e legendas.
from plotnine import ggplot, aes, geom_bar, geom_text, labs
# Creating our Pandas DataFrame
data = pd.DataFrame({'Library': ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine'],
'Chosen by': [2500, 1800, 3000, 2200]})
# Basic Bar Plot with labels
(ggplot(data, aes(x='Library', y='Chosen by'))
+ geom_bar(stat='identity', fill='skyblue')
+ geom_text(aes(label='Chosen by'), va='bottom', size=10, nudge_y=5) # Adds labels on top of bars
+ labs(title='Which Visualization Library Do People Prefer?', x='Visualization Library', y='Number of Enthusiasts'))
Gráficos de barras agrupados e empilhados
O Plotnine também oferece suporte a gráficos de barras agrupados e empilhados. Para gráficos de barras agrupadas, você precisa primeiro definir uma variável categórica para agrupamento.
# Number of preferences for different libraries in different regions
data = pd.DataFrame({'Library': ['Matplotlib', 'Plotly', 'Plotnine', 'Seaborn'] * 2,
'Chosen by': [2000, 1500, 2500, 2000, 1500, 1300, 2000, 1800],
'Region': ['North', 'North', 'North', 'North', 'South', 'South', 'South', 'South']})
# Grouped Bar Plot
(ggplot(data, aes(x='Library', y='Chosen by', fill='Region'))
+ geom_bar(stat='identity', position='dodge')
+ labs(title='Regional Preferences for Visualization Libraries (Grouped)', x='Visualization Library', y='Number of Enthusiasts'))
Para gráficos de barras empilhadas, você pode usar position = 'stack'
.
# Stacked Bar Plot
(ggplot(data, aes(x='Library', y='Chosen by', fill='Region'))
+ geom_bar(stat='identity', position='stack')
+ labs(title='Regional Preferences for Visualization Libraries (Stacked)', x='Visualization Library', y='Number of Enthusiasts'))
Observe como, nesses exemplos, position = 'dodge'
cria barras agrupadas, enquanto position = 'stack'
empilha as barras.
Criando gráficos de barras com o Pandas
Por último, mas não menos importante, temos os pandas. O Pandas oferece uma maneira conveniente de criar gráficos de barras diretamente a partir de DataFrames, portanto, é uma opção rápida e fácil para gráficos básicos.
Gráficos de barras básicos
Para criar um gráfico de barras no Pandas, você pode usar a função plot.bar()
em um DataFrame.
import pandas as pd
data = pd.DataFrame({'Library': ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine'],
'Chosen by': [2500, 1800, 3000, 2200]})
Em seguida, crie um gráfico de barras usando plot.bar()
.
# Basic Bar Plot
data.plot.bar(x='Library', y='Chosen by', color='skyblue', title='Which Visualization Library Do People Prefer?')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()
Personalização avançada
O Pandas permite a personalização de gráficos de barras por meio de parâmetros adicionais e da integração com o Matplotlib.
# Customized Bar Plot
ax = data.plot.bar(x='Library', y='Chosen by', color='skyblue', title='Which Visualization Library Do People Prefer?')
ax.set_xlabel('Visualization Library')
ax.set_ylabel('Number of Enthusiasts')
# Adding annotations
for i in ax.containers:
ax.bar_label(i, label_type='edge')
plt.show()
Neste exemplo, o site ax.bar_label(i, label_type='edge')
adiciona anotações às barras, exibindo o número na parte superior de cada barra.
Gráficos de barras agrupados e empilhados
A criação de gráficos de barras agrupadas e empilhadas no Pandas é simples. Para gráficos de barras agrupadas, você precisa dinamizar o DataFrame para ter colunas separadas para cada grupo.
# Number of preferences for different libraries in different regions
data = pd.DataFrame({'Library': ['Matplotlib', 'Seaborn', 'Plotly', 'Plotnine'],
'North Region': [2000, 1500, 2500, 2000],
'South Region': [1500, 1300, 2000, 1800]})
# Grouped Bar Plot
data.plot.bar(x='Library', y=['North Region', 'South Region'], title='Regional Preferences for Visualization Libraries (Grouped)')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()
Para gráficos de barras empilhadas, use stacked=True
.
# Stacked Bar Plot
data.plot.bar(x='Library', y=['North Region', 'South Region'], stacked=True, title='Regional Preferences for Visualization Libraries (Stacked)')
plt.xlabel('Visualization Library')
plt.ylabel('Number of Enthusiasts')
plt.show()
Práticas recomendadas para projetar gráficos de barras Python eficazes
A criação de gráficos de barras é simples, mas a elaboração de gráficos de barras eficazes e perspicazes requer atenção aos detalhes. As diretrizes a seguir ajudarão você a criar gráficos de barras que comuniquem efetivamente a história dos seus dados.
- Como evitar erros comuns: Ao projetar gráficos de barras, evite sobrecarregar com informações para mantê-los claros e eficazes. Fique com os itens essenciais para evitar a desordem. Use uma escala consistente entre os eixos. Certifique-se de que o eixo comece em zero para evitar enganar os visualizadores com diferenças exageradas.
- Escolha de cores e realces: Selecione cores que adicionem significado aos seus dados, como vermelho para valores negativos ou verde para valores positivos. Mantenha um esquema de cores consistente em todos os enredos relacionados para ajudar o leitor a acompanhar a narrativa. Use cores para chamar a atenção para insights importantes.
- Pedidos de barras para melhor clareza: Organize as barras de forma lógica com base no contexto dos dados, como cronologicamente para dados baseados em tempo ou em ordem decrescente/ascendente para enfatizar tendências. Agrupe barras relacionadas e use cores ou espaçamento para separar os grupos.
Conclusão
Dominar a criação e a personalização de gráficos de barras é uma habilidade essencial para qualquer profissional de dados. Seguindo as diretrizes e as práticas recomendadas descritas neste artigo, você pode criar gráficos de barras claros, informativos e visualmente atraentes que comunicam com eficácia os insights dos dados. Isso permitirá que você apresente seus dados de forma mais eficaz e tome decisões mais bem informadas.
Se você quiser continuar praticando suas habilidades de visualização de dados em Python, procure nosso curso Intro to Python for Data Science, que oferece um ponto de partida para iniciantes, ou então procure nosso curso de habilidades de programação em Python, que oferece um caminho de aprendizado abrangente para dominar o Python.
Profissional experiente em dados e escritor que tem paixão por capacitar aspirantes a especialistas no espaço de dados.
Perguntas frequentes sobre o gráfico de barras Python
O que é um gráfico de barras em Python e por que ele é útil?
Um gráfico de barras representa dados categóricos com barras retangulares, em que o comprimento ou a altura corresponde ao valor da categoria. É útil para comparar categorias, visualizar distribuições e identificar tendências ou valores discrepantes.
Como faço para escolher entre um gráfico de barras vertical e horizontal do Python?
Você pode usar um gráfico de barras verticais para rótulos curtos ou de fácil leitura, enquanto escolhe um gráfico de barras horizontais para rótulos mais longos ou muitas categorias para evitar confusão.
Como faço para personalizar as cores das barras em meu gráfico?
Você pode personalizar as cores das barras para tornar seu gráfico mais atraente visualmente ou para combinar com um esquema de cores específico. No Matplotlib, use o parâmetro color
:
plt.bar(categories, values, color=['red', 'green', 'blue'])
plt.show()
Como posso usar o Python para classificar as barras em meu gráfico de barras?
A classificação das barras pode ajudar a destacar as categorias mais ou menos significativas. Você pode classificar os dados antes da plotagem:
data = {'Category': ['A', 'B', 'C'], 'Value': [4, 7, 1]}
df = pd.DataFrame(data).sort_values(by='Value', ascending=False)
plt.bar(df['Category'], df['Value'])
plt.show()
Posso criar gráficos de barras interativos em Python com o Plotly?
Sim, o Plotly permite que você crie gráficos de barras interativos. Aqui está um exemplo usando o Plotly Express:
import plotly.express as px
data = {'Category': ['A', 'B', 'C'], 'Value': [4, 7, 1]}
fig = px.bar(data, x='Category', y='Value', title='Interactive Bar Plot')
fig.show()
Aprenda sobre Python e gráficos de barras com o DataCamp
curso
Introduction to Data Visualization with Seaborn
curso
Exploratory Data Analysis in Python
tutorial
Tipos de gráficos de dados e como criá-los em Python
tutorial
Introdução à plotagem com Matplotlib em Python
Kevin Babitz
25 min
tutorial
Gráficos de linhas no MatplotLib com Python
tutorial
Tutorial do Python Seaborn Line Plot: Criar visualizações de dados
tutorial
Histogramas no Matplotlib
tutorial