Plotly: Como Criar Gráficos Interativos em Python

Tempo de leitura: 10 minutos
Logo do Plotly em um fundo azul-gelo

Criar gráficos interativos pode parecer complicado, mas com a biblioteca Plotly isso fica bem mais fácil. Se você já trabalha com análise de dados em Python, sabe que visualizar informações de forma clara é essencial. Plotly permite criar visualizações que o usuário pode explorar, dando zoom, passando o mouse para ver valores e até mesmo filtrando dados.

Neste guia, vou mostrar como começar com Plotly do zero. Você vai aprender a instalar a biblioteca, criar seus primeiros gráficos e adicionar recursos interativos que tornam suas visualizações muito mais profissionais e úteis.

Para ajudar você a entender melhor, recomendo assistir este vídeo do canal Walisson Silva que explica de forma prática como usar Plotly:

YouTube player

O que é Plotly

Plotly é uma biblioteca Python voltada para criação de gráficos interativos. Diferente de outras ferramentas como Matplotlib, que gera imagens estáticas, Plotly cria visualizações que permitem interação direta do usuário.

A biblioteca funciona gerando código HTML e JavaScript automaticamente. Isso significa que seus gráficos podem ser incorporados em sites, dashboards e aplicações web sem precisar conhecer essas linguagens.

Existem duas versões principais do Plotly. A versão gratuita oferece todos os recursos básicos e avançados para criar gráficos localmente. Já a versão paga adiciona funcionalidades de compartilhamento em nuvem e colaboração em equipe.

Para quem está aprendendo Python, Plotly é uma ótima escolha porque tem uma sintaxe clara e muita documentação disponível. A curva de aprendizado é suave, mesmo para iniciantes.

Por que usar Plotly para visualização de dados

A principal vantagem do Plotly é a interatividade. Quando você passa o mouse sobre um ponto no gráfico, aparecem informações detalhadas. Você pode dar zoom, arrastar para explorar diferentes áreas e até mesmo esconder ou mostrar séries de dados com um clique.

Essa interatividade torna a análise de dados muito mais rica. Por exemplo, ao apresentar resultados para clientes ou colegas de trabalho, eles podem explorar os dados por conta própria, encontrando insights que talvez você não tivesse percebido.

Outro ponto forte é a facilidade de compartilhamento. Como os gráficos são gerados em HTML, você pode salvá-los e abrir em qualquer navegador. Não precisa de software especial instalado.

Plotly também oferece diversos tipos de gráficos prontos para usar. Desde gráficos de linha simples até mapas geográficos complexos, passando por gráficos 3D e animações. Tudo com poucas linhas de código.

A biblioteca se integra perfeitamente com Pandas e NumPy, tornando o fluxo de trabalho muito natural. Se você já trabalha com essas bibliotecas, vai se sentir em casa usando Plotly.

Instalando Plotly no seu ambiente Python

Antes de começar a criar gráficos, você precisa instalar a biblioteca no seu sistema. O processo é simples e direto.

Abra o terminal ou prompt de comando e digite o seguinte comando:

Bash
pip install plotly

Esse comando vai baixar e instalar o Plotly automaticamente. Se você está usando um ambiente virtual, certifique-se de ativá-lo antes de executar o comando.

Para verificar se a instalação funcionou corretamente, abra o Python interativo e tente importar a biblioteca:

Python
import plotly.graph_objects as go
print("Plotly instalado com sucesso!")

Se nenhum erro aparecer, está tudo pronto para começar. Caso encontre problemas, verifique se você tem o pip atualizado usando pip install --upgrade pip.

Também é útil instalar o Pandas junto, caso ainda não tenha. Muitos exemplos com Plotly usam DataFrames do Pandas para organizar os dados:

Bash
pip install pandas

Criando seu primeiro gráfico de linhas

Vamos começar criando um gráfico de linhas simples. Este é um dos tipos mais comuns e serve para visualizar tendências ao longo do tempo.

Primeiro, vamos importar as bibliotecas necessárias:

Python
import plotly.graph_objects as go

Agora, vamos criar alguns dados simples para plotar. Imagine que você quer mostrar as vendas de uma loja ao longo de seis meses:

Python
meses = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho']
vendas = [15000, 18000, 12000, 22000, 25000, 28000]

fig = go.Figure(data=go.Scatter(x=meses, y=vendas, mode='lines+markers'))
fig.update_layout(title='Vendas Mensais 2024',
                  xaxis_title='Mês',
                  yaxis_title='Vendas (R$)')
fig.show()

Quando você executar esse código, uma janela do navegador vai abrir mostrando o gráfico. Você pode passar o mouse sobre os pontos para ver os valores exatos. Também pode usar os botões no canto superior direito para dar zoom ou salvar o gráfico como imagem.

O parâmetro mode='lines+markers' faz com que apareçam tanto a linha quanto os pontos. Se quiser apenas a linha, use mode='lines'. Para apenas pontos, use mode='markers'.

A função update_layout permite personalizar títulos e rótulos dos eixos. Você pode adicionar muitas outras configurações, como cores, tamanho de fonte e legendas.

Trabalhando com gráficos de barras interativos

Gráficos de barras são perfeitos para comparar diferentes categorias. Com Plotly, criar um gráfico de barras é tão simples quanto criar um gráfico de linhas.

Vamos criar um exemplo comparando as vendas de diferentes produtos:

Python
produtos = ['Notebook', 'Mouse', 'Teclado', 'Monitor', 'Webcam']
quantidades = [45, 120, 85, 60, 95]

fig = go.Figure(data=go.Bar(x=produtos, y=quantidades))
fig.update_layout(title='Vendas por Produto',
                  xaxis_title='Produto',
                  yaxis_title='Quantidade Vendida')
fig.show()

O resultado é um gráfico de barras verticais onde você pode ver rapidamente qual produto teve mais vendas. Ao passar o mouse sobre cada barra, aparecem informações detalhadas.

Para criar barras horizontais, basta trocar os valores de x e y:

Python
fig = go.Figure(data=go.Bar(x=quantidades, y=produtos, orientation='h'))
fig.update_layout(title='Vendas por Produto',
                  xaxis_title='Quantidade Vendida',
                  yaxis_title='Produto')
fig.show()

Você também pode personalizar as cores das barras. Adicione o parâmetro marker_color:

Python
fig = go.Figure(data=go.Bar(x=produtos, y=quantidades, 
                             marker_color='lightblue'))
fig.show()

Para usar cores diferentes em cada barra, passe uma lista de cores:

Python
cores = ['red', 'blue', 'green', 'orange', 'purple']
fig = go.Figure(data=go.Bar(x=produtos, y=quantidades, 
                             marker_color=cores))
fig.show()

Criando gráficos de dispersão para análise de correlação

Gráficos de dispersão (scatter plots) são úteis para identificar relações entre duas variáveis. Por exemplo, você pode querer ver se existe relação entre horas de estudo e notas em provas.

Vamos criar um exemplo:

Python
horas_estudo = [2, 3, 4, 5, 6, 7, 8, 9, 10]
notas = [55, 60, 65, 70, 75, 80, 85, 90, 95]

fig = go.Figure(data=go.Scatter(x=horas_estudo, y=notas, mode='markers'))
fig.update_layout(title='Relação entre Horas de Estudo e Notas',
                  xaxis_title='Horas de Estudo',
                  yaxis_title='Nota')
fig.show()

Neste gráfico, cada ponto representa um aluno. Você pode ver claramente que quanto mais horas de estudo, maior tende a ser a nota.

Para tornar o gráfico mais informativo, você pode variar o tamanho e cor dos pontos com base em outras variáveis:

Python
fig = go.Figure(data=go.Scatter(
    x=horas_estudo, 
    y=notas, 
    mode='markers',
    marker=dict(
        size=[10, 15, 20, 25, 30, 35, 40, 45, 50],
        color=notas,
        colorscale='Viridis',
        showscale=True
    )
))
fig.show()

Esse código cria pontos de tamanhos variados e aplica uma escala de cores baseada nas notas. A barra de cores à direita mostra a legenda.

Plotando múltiplas séries no mesmo gráfico

Muitas vezes você precisa comparar várias séries de dados no mesmo gráfico. Plotly torna isso muito simples.

Vamos comparar as vendas de duas lojas diferentes:

Python
meses = ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun']
loja_a = [15000, 18000, 12000, 22000, 25000, 28000]
loja_b = [12000, 16000, 14000, 19000, 23000, 26000]

fig = go.Figure()
fig.add_trace(go.Scatter(x=meses, y=loja_a, mode='lines+markers', name='Loja A'))
fig.add_trace(go.Scatter(x=meses, y=loja_b, mode='lines+markers', name='Loja B'))

fig.update_layout(title='Comparação de Vendas entre Lojas',
                  xaxis_title='Mês',
                  yaxis_title='Vendas (R$)')
fig.show()

Cada série aparece em uma cor diferente automaticamente. A legenda no canto superior direito permite clicar para esconder ou mostrar cada série.

Você pode adicionar quantas séries precisar usando add_trace. Também pode personalizar as cores de cada linha:

Python
fig = go.Figure()
fig.add_trace(go.Scatter(x=meses, y=loja_a, mode='lines+markers', 
                         name='Loja A', line=dict(color='blue', width=2)))
fig.add_trace(go.Scatter(x=meses, y=loja_b, mode='lines+markers', 
                         name='Loja B', line=dict(color='red', width=2)))
fig.show()

Personalizando cores e estilos dos gráficos

Plotly oferece controle total sobre a aparência dos seus gráficos. Você pode mudar cores, fontes, tamanhos e muito mais.

Para mudar a cor de fundo do gráfico:

Python
fig.update_layout(
    plot_bgcolor='lightgray',
    paper_bgcolor='white'
)

plot_bgcolor muda a cor da área onde os dados são plotados. paper_bgcolor muda a cor de todo o fundo do gráfico.

Para personalizar a fonte dos títulos e textos:

Python
fig.update_layout(
    title=dict(
        text='Meu Gráfico',
        font=dict(size=24, color='darkblue', family='Arial')
    ),
    xaxis=dict(
        title_font=dict(size=16, color='gray'),
        tickfont=dict(size=12)
    )
)

Você também pode adicionar linhas de grade personalizadas:

Python
fig.update_xaxes(showgrid=True, gridwidth=1, gridcolor='lightgray')
fig.update_yaxes(showgrid=True, gridwidth=1, gridcolor='lightgray')

Para remover as linhas de grade completamente:

Python
fig.update_xaxes(showgrid=False)
fig.update_yaxes(showgrid=False)

Adicionando títulos, legendas e anotações

Títulos e legendas ajudam o leitor a entender rapidamente o que o gráfico mostra. Plotly oferece várias opções para adicionar esses elementos.

Para adicionar um título principal e subtítulo:

Python
fig.update_layout(
    title=dict(
        text='Vendas Mensais<br><sub>Comparação 2023 vs 2024</sub>',
        x=0.5,
        xanchor='center'
    )
)

O parâmetro x=0.5 centraliza o título. Use <br> para quebrar linha e <sub> para subtítulo.

Para posicionar a legenda:

Python
fig.update_layout(
    legend=dict(
        x=0.5,
        y=-0.2,
        xanchor='center',
        yanchor='top',
        orientation='h'
    )
)

Esse código coloca a legenda abaixo do gráfico, centralizada horizontalmente.

Anotações são úteis para destacar pontos específicos:

Python
fig.add_annotation(
    x='Abril',
    y=22000,
    text='Pico de vendas',
    showarrow=True,
    arrowhead=2,
    arrowcolor='red'
)

Isso adiciona uma seta vermelha apontando para o ponto específico com um texto explicativo.

Salvando gráficos como HTML ou imagens

Depois de criar seu gráfico, você vai querer salvá-lo para usar em relatórios ou apresentações. Plotly oferece várias opções de exportação.

Para salvar como arquivo HTML interativo:

Python
fig.write_html('meu_grafico.html')

O arquivo HTML gerado pode ser aberto em qualquer navegador e mantém toda a interatividade. É perfeito para compartilhar com outras pessoas.

Para salvar como imagem estática (PNG, JPG ou PDF), você precisa instalar uma biblioteca adicional chamada Kaleido:

Bash
pip install kaleido

Depois de instalar, você pode salvar como imagem:

Python
fig.write_image('meu_grafico.png', width=1200, height=800)

Os parâmetros width e height controlam o tamanho da imagem em pixels. Para melhor qualidade, use valores maiores.

Você também pode salvar como PDF:

Python
fig.write_image('meu_grafico.pdf')

Integrando Plotly com Pandas DataFrames

Se você já trabalha com Pandas, vai adorar como Plotly se integra perfeitamente. Você pode criar gráficos diretamente de DataFrames sem precisar extrair colunas manualmente.

Primeiro, vamos criar um DataFrame simples:

Python
import pandas as pd

dados = {
    'Mes': ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun'],
    'Vendas': [15000, 18000, 12000, 22000, 25000, 28000],
    'Despesas': [8000, 9000, 7500, 11000, 12000, 13000]
}

df = pd.DataFrame(dados)

Agora, podemos usar o Plotly Express, uma interface de alto nível que funciona muito bem com DataFrames:

Python
import plotly.express as px

fig = px.line(df, x='Mes', y=['Vendas', 'Despesas'], 
              title='Vendas vs Despesas')
fig.show()

Com apenas uma linha de código, você cria um gráfico com duas séries. Plotly Express detecta automaticamente que você quer plotar duas colunas e cria a legenda.

Para gráficos de barras:

Python
fig = px.bar(df, x='Mes', y='Vendas', title='Vendas Mensais')
fig.show()

Você também pode criar gráficos de dispersão facilmente:

Python
fig = px.scatter(df, x='Vendas', y='Despesas', 
                 title='Relação Vendas x Despesas')
fig.show()

Casos de uso práticos do Plotly em projetos reais

Plotly é usado em diversos tipos de projetos profissionais. Vou mostrar alguns cenários reais onde a biblioteca brilha.

Em análise financeira, você pode criar gráficos de candlestick para visualizar ações da bolsa. Esses gráficos mostram preço de abertura, fechamento, máxima e mínima de cada período:

Python
import plotly.graph_objects as go

fig = go.Figure(data=go.Candlestick(
    x=['2024-01', '2024-02', '2024-03'],
    open=[100, 105, 110],
    high=[115, 120, 125],
    low=[95, 100, 105],
    close=[110, 115, 120]
))
fig.show()

Em análise de vendas, você pode criar dashboards interativos que gerentes podem explorar. Por exemplo, um gráfico mostrando vendas por região com filtros dinâmicos.

Para análise científica, gráficos 3D ajudam a visualizar dados complexos. Plotly oferece suporte completo para visualizações tridimensionais:

Python
fig = go.Figure(data=go.Scatter3d(
    x=[1, 2, 3, 4, 5],
    y=[1, 4, 9, 16, 25],
    z=[1, 8, 27, 64, 125],
    mode='markers'
))
fig.show()

Em aplicações web, você pode incorporar gráficos Plotly em sites feitos com Django ou Flask. Os gráficos funcionam perfeitamente em navegadores e dispositivos móveis.

Perguntas Frequentes (FAQ)

1. O que é Plotly?

Plotly é uma biblioteca Python que cria gráficos interativos. Diferente de outras ferramentas, permite que usuários explorem dados com zoom e filtros.

2. Plotly é gratuito?

Sim, a versão básica do Plotly é totalmente gratuita e oferece todos os recursos principais para criar visualizações.

3. Qual a diferença entre Plotly e Matplotlib?

Matplotlib cria gráficos estáticos enquanto Plotly gera visualizações interativas que podem ser exploradas pelo usuário.

4. Como instalar Plotly no Python?

Use o comando pip install plotly no terminal. Certifique-se de ter Python e pip instalados no seu sistema.

5. Plotly funciona com Pandas?

Sim, Plotly se integra perfeitamente com Pandas. Você pode criar gráficos diretamente de DataFrames usando Plotly Express.

6. Posso salvar gráficos Plotly como imagem?

Sim, após instalar a biblioteca Kaleido você pode salvar gráficos em PNG, JPG ou PDF usando o método write_image.

7. É difícil aprender Plotly?

Não, Plotly tem uma sintaxe simples e muita documentação. Se você conhece Python básico já consegue criar gráficos profissionais.

8. Plotly funciona em aplicações web?

Sim, os gráficos gerados podem ser incorporados em sites e funcionam em qualquer navegador moderno sem plugins adicionais.

9. Quais tipos de gráficos Plotly suporta?

Plotly suporta linhas, barras, dispersão, pizza, mapas geográficos, gráficos 3D, candlestick e muitos outros tipos de visualizações.

10. Preciso conhecer JavaScript para usar Plotly?

Não, Plotly gera todo o código JavaScript automaticamente. Você só precisa conhecer Python para criar gráficos completos.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Conteúdo do artigo

    Artigos relacionados

    Logo do Python com o texto 'asyncio'
    Bibliotecas
    Foto do Leandro Hirt

    Como usar o asyncio no Python: Programação Assíncrona

    Aprenda como usar o asyncio no Python para criar aplicações mais rápidas e eficientes. Guia completo com exemplos práticos de

    Ler mais

    Tempo de leitura: 14 minutos
    11/12/2025
    Foto de um calendário
    FundamentosBibliotecas
    Foto do Leandro Hirt

    Datas e Horas no Python com datetime

    Aprenda a trabalhar com datas e horas no Python usando o módulo datetime. Guia completo com exemplos práticos de formatação,

    Ler mais

    Tempo de leitura: 13 minutos
    10/12/2025
    Logo do Python e do MySQL com um símbolo de '+' entre as logos
    Banco de DadosBibliotecas
    Foto do Leandro Hirt

    Como Conectar Python ao MySQL de Forma Fácil

    Aprenda como conectar Python ao MySQL passo a passo. Tutorial completo com MySQL Connector, SQLAlchemy, exemplos de código para inserir,

    Ler mais

    Tempo de leitura: 19 minutos
    07/12/2025
    Logo do Numpy em um fundo roxo-escuro
    Bibliotecas
    Foto do Leandro Hirt

    Introdução ao NumPy no Python para Iniciantes

    Aprender Python já abre muitas portas, mas entender como trabalhar com dados transforma suas habilidades de verdade. É aqui que

    Ler mais

    Tempo de leitura: 7 minutos
    05/12/2025
    Logo do Python com o texto 'requests' abaixo
    Bibliotecas
    Foto do Leandro Hirt

    Como usar a biblioteca Requests em Python

    A biblioteca Requests em Python permite que você envie requisições HTTP de forma simples. Você pode acessar dados de APIs,

    Ler mais

    Tempo de leitura: 5 minutos
    04/12/2025
    Logos do Python e Excel lado a lado representando a importação de dados do Excel para Python.
    Bibliotecas
    Foto do Leandro Hirt

    Python Excel: importar dados do Excel para Python

    A integração entre Python e Excel se tornou essencial para muitas rotinas de trabalho. Profissionais de diversas áreas precisam analisar

    Ler mais

    Tempo de leitura: 8 minutos
    20/11/2025

    Minicurso de Python

    Insira seu e-mail e para receber acesso às aulas agora mesmo