12 minutos de leitura

Como usar Plotly para criar gráficos em Python

Por Mateus Kienzle
Conteúdos do artigo

Você já se perguntou como criar gráficos com Python? Neste artigo, você vai descobrir como fazer isso de forma prática com a biblioteca Plotly.

Gráficos são formas extremamente valiosas em várias áreas do conhecimento, pois facilitam a visualização de dados que, por vezes, podem ser complexos de entender somente por meio de letras e números.

Você provavelmente já conhece algumas ferramentas para criar gráficos, como o Excel ou o Power BI. Mas você sabia que também é possível criar gráficos com Python, uma das linguagens de programação mais populares e versáteis do mundo?

Python oferece várias bibliotecas para criar gráficos de diferentes tipos e estilos, com alto grau de personalização e interatividade. Uma dessas bibliotecas é o Plotly, que vamos usar neste artigo para transformar números em imagens, o que facilita a leitura de dados.

Partiremos do pressuposto de que você já está familiarizado com o básico de Python. Do contrário, recomendamos o curso Python Starter, disponível em qualquer uma das trilhas da Asimov Academy.

Então agora, vamos começar!

Introdução à biblioteca Plotly

Primeiramente, se você não possui a biblioteca Plotly instalada na sua máquina, você pode instalá-la com o seguinte comando no terminal ou prompt de comando:

pip install plotly

Feito isso, agora é possível importar a biblioteca e os módulos dela nos seus códigos de Python. E, para nos certificarmos disso, vamos realizar um primeiro teste utilizando o Plotly.

A primeira coisa que precisamos ter em mente é:

  • O que representar no gráfico?
  • Quais unidades de medida mostrar em cada eixo?

A partir desses questionamentos, precisamos definir qual tipo de gráfico é melhor para realizar essa representação.

Exemplo prático: gráfico de barras simples

Neste primeiro exemplo, vamos plotar um gráfico em Python usando dados bem simples. A ideia é mostrar três valores diferentes e rotulá-los de forma independente; para isso, precisamos informar esses valores através do eixo Y e os seus respectivos rótulos no eixo X.

Então, no nosso exemplo, vamos plotar um gráfico dos valores 1, 2 e 3 e rotular esses valores com “a”, “b” e “c”, respectivamente. Nesse caso, utilizaremos o gráfico do tipo barras.

Logo, as informações que temos para a construção do gráfico são:

  • Valores eixo X = “a”, “b” e “c”
  • Valores eixo Y = 1, 2 e 3
  • Tipo de gráfico: barras

Por fim, basta traduzirmos essas informações para a linguagem Python para que, por meio da biblioteca Plotly, ele interprete os dados e nos retorne o resultado final.

A forma mais simples de realizar esse procedimento está descrita abaixo:

import plotly.express as px
fig = px.bar(x=["a", "b", "c"], y=[1, 3, 2])
fig.show()

Output do gráfico com Python:

Output de um gráfico de barras em Python

Por meio da função px.bar (“bar” quer dizer “barra”, que é justamente o tipo do nosso gráfico) do Plotly, conseguimos construir o gráfico de barras com os dados descritos anteriormente.

Outros tipos de gráficos

Semelhantemente ao exemplo anterior, você pode criar um gráfico de linhas. Basta substituir o px.bar por px.line, obtendo o seguinte output:

Output de um gráfico de linhas em Python

Da mesma forma, você também pode construir um gráfico do tipo “torta”, por meio da função px.pie. Entretanto, a inserção de dados nos parâmetros da função desse tipo de gráfico é um pouco diferente dos anteriores, pois nele a ordem de inserção dos valores e dos rótulos é trocada, além de que os parâmetros não são mais “X” e “Y”, são “values” e “names”, conforme está abaixo:

import plotly.express as px
fig = px.pie(values=[15, 20, 35, 50], names=['a', 'b', 'c', 'd'])
fig.show()

Output do gráfico com Python:

Output de um gráfico de pizza em Python

Como você viu, é possível criar diferentes tipos de gráficos usando o Plotly. O que irá mudar é a forma de passar os dados que serão representados para dentro da função, mas a ideia é parecida: inserir os dados e os rótulos para esses respectivos dados e informar o tipo de gráfico desejado. Assim você poderá criar gráficos de diversos tipos, como histogramas, linhas 3D, sunburst, linha do tempo, espalhamento etc.

Módulos do Plotly para criar gráficos

Neste momento, você já deve estar se perguntando:

“Por que realizamos o import de plotly.express, sendo que a biblioteca instalada foi a Plotly?”

Essa é uma das peculiaridades do Plotly: ele possui duas formas de utilização. Uma delas é a plotly.express, que acabamos de ver nos exemplos acima, a outra é a plotly.graph_objects. Portanto, temos as duas seguintes formas de importar a biblioteca Plotly:

import plotly.express as px
import plotly.graph_objects as go

E por que não importar simplesmente plotly? Porque você não vai conseguir acessar as funções da biblioteca, já que elas estão dentro dos módulos express e graph_objects. Por isso, você precisa especificar qual deles você quer usar.

Diferenças entre Plotly Express e Graph Objects

A principal diferença entre usar o plotly.express e o plotly.graph_objects para criar gráficos com Python está na praticidade entre um e outro. Usando o plotly.express, é possível escrever com menos linhas de código um mesmo script que seria escrito utilizando graph_objects. E isso se deve ao fato de que, quando você usa uma função no plotly.express, ela chama, internamente, o graph_objects e retorna um valor.

Em outras palavras, algumas das funções do Express são úteis porque implementam coisas que custariam muito mais linhas de código se usássemos graph_objects.

E por que escolher o caminho mais difícil? 

É aí que as vantagens do graph_objects começam a aparecer!

Certos tipos de gráfico ainda não são possíveis de criar com o Plotly Express, como os que usam alguns traços 3D (malha ou isosuperfície, por exemplo). Além disso, gráficos como figuras com subplots de diferentes tipos, plotagens de eixo duplo ou plotagens com diferentes tipos de traços são complicados de criar usando o Express.

Portanto, ainda que seja mais complexo de utilizar, o graph_objects oferece mais recursos para construir gráficos.

Diferenças na prática

Para ver a diferença na prática, vamos usar um dataframe que nos mostra o número de frutas que duas pessoas comeram e quais frutas foram essas. Esse dataframe pode ser construído utilizando a biblioteca Pandas, conforme abaixo:

import pandas as pd

df = pd.DataFrame({
"Frutas": ["Maçãs", "Laranjas", "Bananas", "Maçãs", "Laranjas", "Bananas"],
"Pessoa": ["Pedro", "Pedro", "Pedro", "Miguel", "Miguel", "Miguel"],
"Ingeridas": [2, 1, 3, 1, 3, 2],
})

Caso você não tenha a biblioteca Pandas, pode instalá-la com o seguinte comando no terminal ou prompt de comando: pip install pandas. Mas, se você ainda não conhece a biblioteca Pandas ou não sabe muito bem como ela funciona, recomendamos o curso Analisando Dados com Pandas & SQL, disponível em qualquer uma das trilhas da Asimov Academy.

Agora, considerando o DataFrame acima, vamos ver como deve ser escrito o código utilizando tanto o plotly.express quanto o graph_objects para produzir exatamente o mesmo resultado:

Plotly Express

import plotly.express as px

fig = px.bar(df, x="Frutas", y="Ingeridas", color="Pessoa", barmode="group")
fig.show()
Output de um gráfico feito com Plotly Express (plotly.express)

Graph Objects

import plotly.graph_objects as go

fig = go.Figure()
for pessoa, group in df.groupby("Pessoa"):
   fig.add_trace(go.Bar(x=group["Frutas"], y=group["Ingeridas"], name=pessoa,  
hovertemplate="Pessoa=%s<br>Frutas=%%{x}<br>Ingeridas=%%{y}<extra></extra>"% pessoa))
fig.update_layout(legend_title_text = "Pessoa")
fig.update_xaxes(title_text="Frutas")
fig.update_yaxes(title_text="Ingeridas")
fig.show()
Output de um gráfico feito com Graph Objects (graph_objects)

Gráficos com Python em projetos avançados

Como foi mencionado neste artigo, o Python possui recursos excelentes para criar diversos tipos de gráfico. No entanto, é de se esperar que a complexidade da representação de dados em gráficos aumente conforme o tamanho e os tipos de dados aumentarem, pois será necessário descrever outros parâmetros nas funções, realizar manipulações e tratamentos de dados e usar outras funções.

Mas o que você aprendeu aqui é apenas o começo. Aqui no blog você encontra um post completo sobre como colocar seus gráficos em dashboards usando Python.

Além disso, nossa Trilha Dashboards com Python inclui uma série de aulas que ensinam a construir dashboards interativos e aplicativos web que usam vários tipos de gráficos de complexidade ainda maior, permitindo plotar gráficos com diferentes tipos de dados e muitas opções de visualização.

Continue conosco para adquirir novos conhecimentos e se destacar nas suas atividades!

Inscreva-se gratuitamente e fique atualizado

Receba toda semana um resumo dos principais conteúdos da Asimov direto no seu e-mail. 100% livre de spam.

Áreas de interesse:
Conteúdos do tutorial