Foto de uma estrutura metálica na cor laranja com um fundo preto.
Photo by Alain Pham on Unsplash

Fundamentos do Plotly: Uma introdução a estrutura da figura

Francisco Foz
6 min readNov 15, 2022

Na maioria das vezes, contar uma história com dados é feito através de uma boa visualização de dados. Para se criar boas visualizações, apenas gráficos estáticos já dão conta do recado.

Eles são excelentes, satisfazem nossas necessidades e grande parte das pessoas que trabalham com Python ou R utilizam, mas… nós queremos aprimorar nossas habilidades, certo?

Criar gráficos dinâmicos pode ser um próximo passo para você que quer melhorar suas habilidades de visualização de dados e o Plotly, é uma excelente biblioteca para esse objetivo. Utilizando um módulo dele, o Plotly Express, com algumas linhas de código já conseguimos visualizar os dados de forma rápida.

O módulo possui mais de 30 funções prontas para você chamar e utilizar em seus projetos, dos diferentes tipos de gráficos: barras, boxplot, violino, mapa, pizza, histograma, dispersão…

Mas se você quiser customizar ainda mais os gráficos ou se aperfeiçoar na biblioteca, você precisará entender melhor como funcionam as coisas por debaixo desse módulo.

Entender os fundamentos dela é um bom caminho para se seguir.

Bom, no texto de hoje trago uma introdução a estrutura da figura gerada no Plotly.

Bora lá?

Gif da visualização do contorno de uma estrutura metálica, na cor laranja com o fundo preto.

Sumário

Plotly por debaixo dos panos

Estrutura: Data

Estrutura: Layout

Estrutura: Frames

Configurações do gráfico

Estrutura das coordenadas

Considerações finais

Plotly por debaixo dos panos

Estou utilizando o Plotly com o Python, porque poderia utilizar R, Julia, Javascript, F#, MATLAB…

Mas quando chamo uma função do Plotly com Python ele renderiza a imagem utilizando o Plotly.js.

Sim! Na realidade ele trabalha com o Javascript por detrás.

O Plotly.js foi escrito em cima da D3.js e da stack.gl.

Se você, assim como eu, já estudou algum conteúdo sobre visualizações de dados, possivelmente já deve ter ouvido falar da D3, agora da Stack eu nunca tinha lido a respeito. Entrando no site da ferramenta dá para se ter uma noção do poder de criação de imagens 3D que ela tem.

Voltando ao Python.py, as figuras de plotadas são representadas como dicionários Python ou um objeto plotly.graph_objects transformadas em um JSON e depois enviadas para o Javascript trabalhar.

Se você tiver curiosidade, digite fig.show(‘json’) e verá o JSON:

fig = px.bar(emprestimos,x=’Faculdade’,y=’Emprestimos’,title=”Quantidade de empréstimos realizados <br><br><sup> Dados de setembro de 2022</sup>”,width=800, height=500)fig.update_yaxes(title=None)
fig.update_xaxes(title=None)
fig.show(‘json’)

Cada figura plotada tem uma estrutura base de três itens:

  • Data
  • Layout
  • Frames (caso seja uma figura animada)

Estrutura: Data

O item Data é onde estão os aspectos de conteúdo do gráfico.

Ele na realidade é uma lista com vários dicionários, no qual cada elemento formará um aspecto dele: array dos dados no eixo x e y, tipo de gráfico, se tem legenda ativa ou não, etc….

Imagem do código exemplificando a estrutura Data.

Estrutura: Layout

Como seu próprio nome já fala o Layout é onde tem todas as informações do visual dele.

É um dicionário com vários elementos como: o título, tamanho, posição dos eixos, posição da legenda etc.

Imagem do código exemplificando a estrutura Layout.

Estrutura: Frames

Se o gráfico for animado, como esse:

Gif de um gráfico animado utilizando Plotly.

Ele terá o item Frames preenchido.

Caso não seja animado, automaticamente ele não será preenchido.

Esse item é outra lista de dicionários com vários elementos que criarão cada quadro para se movimentar depois, assim como um vídeo.

Imagem do código exemplificando a estrutura Frames.

Agora, para controlar as configurações de usabilidade do frames, como os botões de “play” e “stop” é através do Layout.

Configurações do gráfico

Além de todas essas informações da estrutura do gráfico, ainda temos como parametrizar as configurações de como esse gráfico se comportará.

Como por exemplo desabilitar o zoom do do gráfico, parametrizar o formato da imagem no botão de download, transformar ele em um gráfico estático…

Mas fazer gráficos estáticos com o Plotly não é exatamente o que queremos nesse momento, certo?! :)

Tudo isso pode ser apenas estruturado passando os elementos necessários em um dicionário e o atribuindo no config quando chamar o .show().

Bloqueando o zoom:

fig = px.bar(x=[“Faculdade de Ciências Aplicadas”,”Centro de Engenharia Biomédica”,”Faculdade de Tecnologia”],
y=[5259,4895,6230],title=”Quantidade de empréstimos realizados <br><br><sup> Setembro de 2022</sup>”,width=800, height=600)
fig.update_yaxes(title=None,range=[0,10000])
fig.update_xaxes(title=None)
config = dict({‘scrollZoom’: False})fig.show(config=config)

Configurando o botão de download:

fig = px.bar(x=[“Faculdade de Ciências Aplicadas”,”Centro de Engenharia Biomédica”,”Faculdade de Tecnologia”],y=[5259,4895,6230],title=”Quantidade de empréstimos realizados <br><br><sup> Setembro de 2022</sup>”,width=800, height=600)fig.update_yaxes(title=None,range=[0,10000])
fig.update_xaxes(title=None)
config = {‘toImageButtonOptions’: {
‘format’: ‘png’,
‘filename’: ‘custom_image’,
‘height’: 500,
‘width’: 700
}}
fig.show(config=config)

Estrutura das coordenadas

Quando posicionamos algum elemento dentro do gráfico, como uma legenda, configuramos as posições x e y dela.

Mas essa medida é relativa ao tamanho configurado lá no Layout (na maioria das vezes automaticamente), como você pode ver com as posições dessa legenda:

fig = px.bar(emprestimos,x=’Faculdade’,y=’Emprestimos’,title=”Quantidade de empréstimos realizados <br><br><sup> Dados de setembro de 2022</sup>”,width=800, height=500)fig.update_yaxes(title=None,range=[0,10000])
fig.update_xaxes(title=None)
fig.add_annotation(x=1,y=5000,text=’Ponto de atenção’,arrowhead=2,
font=dict(family=”Arial”,size=12,color=”white”),
arrowcolor=”black”,borderpad=4,bgcolor=”darkorange”)
fig.show()
Imagem do gráfico, na cor azul, exemplificando a posição da legenda, na cor laranja e branco.

Mas você também pode configurar as coordenadas escolhendo a estrutura “paper”, que é a medida relativa dos valores dos eixos em um sistema de coordenadas entre 0 e 1.

Se você passar valores acima de 1 ou abaixo de 0 estará fora da área do gráfico.

fig = px.bar(emprestimos,x=’Faculdade’,y=’Emprestimos’,title=”Quantidade de empréstimos realizados <br><br><sup> Dados de setembro de 2022</sup>”,width=800, height=500)fig.update_yaxes(title=None,range=[0,10000])
fig.update_xaxes(title=None)
fig.add_annotation(x=0.5,y=0.5,xref=’paper’,yref=’paper’,text=’Ponto de atenção’,arrowhead=2,
font=dict(family=”Arial”,size=12,color=”white”),
arrowcolor=”black”,
borderpad=4,
bgcolor=”darkorange”)
fig.show()
Imagem do gráfico, na cor azul, exemplificando a posição da legenda, na cor laranja e branco, com duas setas nos eixos x e y, na cor preta.

Se precisar configurar apenas um dos eixos, só configure em apenas um:

fig = px.bar(emprestimos,x=’Faculdade’,y=’Emprestimos’,title=”Quantidade de empréstimos realizados <br><br><sup> Dados de setembro de 2022</sup>”,width=800, height=500)fig.update_yaxes(title=None,range=[0,10000])
fig.update_xaxes(title=None)
fig.add_annotation(x=0.5,y=5000,xref=’paper’,text=’Ponto de atenção’,arrowhead=2,
font=dict(family=”Arial”,size=12,color=”white”),
arrowcolor=”black”,
borderpad=4,
bgcolor=”darkorange”)
fig.show()
Imagem do gráfico, na cor azul, exemplificando a posição da legenda, na cor laranja e branco.

Considerações finais

É bastante interessante lermos a documentação e entendermos os fundamentos de uma biblioteca para podermos utilizá-la da melhor forma.

Esse conteúdo foi realizado a partir da leitura da documentação do Ploty.py e você também pode consultá-la aqui.

É diferente de ler e “decorar” cada API… você não precisa decorar, mas sim entender como ela funciona.

Ler, você pode ler toda vez que consultá-la e ver outras API’s…

Decorar, vem com o tempo, com o uso… com a prática.

Agora me diga, como você estuda a documentação de uma biblioteca?

E sobre a estrutura da figura do Plotly, você já sabia que ela era dessa forma?

Deixe nos comentários e vamos trocar conhecimento.

Se você chegou até aqui e curtiu, dê palmas, compartilhe e se inscreva para me acompanhar.

Ainda há muito a se explorar.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Francisco Foz
Francisco Foz

Written by Francisco Foz

Bibliotecário | Analista de dados | Disseminando informações para produzir conhecimento.

No responses yet

Write a response