Plotly é uma biblioteca de visualização de dados do Python, e que permite a criação e publicação de gráficos interativos, bonitos e de altíssima qualidade.
Matplotlib é a biblioteca mais conhecida pela comunidade, porém apresenta diversas limitações – reflexo da época em que foi concebida.
No entanto, em um tempo onde a capacidade de se criar gráficos que “contam história” vem ganhando cada vez mais importância (quantas vezes você não escutou falar sobre Storytelling?!), vale a pena conhecer outras armas para o seu arsenal.
Se antes era complicado construir gráficos atraentes, modernos e dinâmicos, hoje as dificuldades foram reduzidas drasticamente com o Plotly.
O que é Plotly?
Plotly é um projeto open-source que suporta mais de 40 tipos de gráficos, e abrange desde simples gráficos de linhas até candlesticks ou mapas.
Feito sobre a biblioteca JavaScript plotly.js
, o plotly.py
permite que seus gráficos possam ser incorporados à Jupyter notebooks ou páginas HTML estáticas.
Se você usa o ambiente cloud Google Colab, o Plotly já vem instalado por padrão. Agora, se você precisar instalar o pacote em seu próprio ambiente, basta executar pip install plotly
no Terminal.
Criando um Gráfico de Candlestick com Plotly
Para te mostrar como é fácil criar gráficos com Plotly (mesmo aqueles mais complexos), vou plotar um Gráfico de Candlestick para a ação do Banco do Brasil (BBAS3).
Gráficos de Candlestick são muito usados no mercado financeiro, e permitem identificar rapidamente os preços de abertuda, fechamento, máxima e mínima.
Ou seja, para conseguir criá-lo com o Plotly você precisa ter pelo menos essas quatro informações para cada ponto no eixo y.
Esse tipo de visualização também precisa que uma unidade de tempo seja passada para o eixo x. Neste caso, como os candlesticks são diários, cada tick vai representar exatamente um dia.
Pelo site Yahoo Finance, baixei os dados da ação ordinária do Banco do Brasil (BBAS3) em formato csv
e disponibilizei o arquivo neste link.
# importar bibliotecas
import pandas as pd
import plotly.graph_objects as go
# importar os dados do BBAS3 csv->dataframe
df = pd.read_csv("https://raw.githubusercontent.com/carlosfab/curso_data_science_na_pratica/master/modulo_02/BBAS3.SA.csv")
# criar um gráfico interativo com o Plotly
# gráfico bbas3 (candlestick
trace1 = {
'x': df.Date,
'open': df.Open,
'close': df.Close,
'high': df.High,
'low': df.Low,
'type': 'candlestick',
'name': 'BBAS3',
'showlegend': False
}
# informar todos os dados e gráficos em uma lista
data = [trace1]
# configurar o layout do gráfico
layout = go.Layout({
'title': {
'text': 'Gráfico de Candlestick - BBAS3',
'font': {
'size': 20
}
}
})
# instanciar objeto Figure e plotar o gráfico
fig = go.Figure(data=data, layout=layout)
fig.show()
A primeira etapa é definir quais são os dados e atributos de interesse (trace1
). Veja também que eu informei explicitamente que desejava um Candlestick Chart por meio de 'type': 'candlestick'
.
Todas as informações relativas ao layout são passadas em um outro dicinário (layout
), e passadas mais adiante quando eu instanciar um objeto Figure
.
Plotly foi tão bem arquitetado que se torna fácil acrescentar informações extras ou acrescentar outros gráficos. Veja por exemplo como eu adiciono um gráfico com a média móvel para 30 dias.
# calcular a média de 30 dias
avg_30 = df.Close.rolling(window=30, min_periods=1).mean()
# criar um gráfico interativo com o Plotly
# gráfico bbas3 (candlestick
trace1 = {
'x': df.Date,
'open': df.Open,
'close': df.Close,
'high': df.High,
'low': df.Low,
'type': 'candlestick',
'name': 'BBAS3',
'showlegend': False
}
# média de 30 dias (linha)
trace2 = {
'x': df.Date,
'y': avg_30,
'type': 'scatter',
'mode': 'lines',
'line': {
'width': 1,
'color': 'blue'
},
'name': 'Média (30 dias)'
}
# informar todos os dados e gráficos em uma lista
data = [trace1, trace2]
# configurar o layout do gráfico
layout = go.Layout({
'title': {
'text': 'Gráfico de Candlestick - BBAS3',
'font': {
'size': 20
}
}
})
# instanciar objeto Figure e plotar o gráfico
fig = go.Figure(data=data, layout=layout)
fig.show()
Basicamente, calculei a média para 30 dias, criei um novo dicionário com as informações do novo plot trace2
e acrescentei esses dados na lista data = [trace1, trace2]
.
Plotly vs. Matplotlib
Como eu disse, o Matplotlib foi a biblioteca pioneira para visualização de dados em Python, e ainda é a mais usada por todos os cientistas de dados e programadores Python.
No entanto, o Matplotlib oferece muitas limitações e não possui diversos gráficos utilizados hoje em dia na área de Data Science.
Já o Plotly trouxe uma proposta inovadora, facilidade na hora de plotar gráficos e um visual bem mais atraente – e isso ajuda muito para o seu storytelling.
Apesar de ter uma sintaxe completamente diferente daquela que estamos acostumados, depois que você aprendê-la, nunca mais vai querer voltar atrás!
Maravilhoso.