Home
Button Mobile Webdesign em Foco
Newsletter Webdesign em Foco
Support Webdesign em Foco
Contribuition Webdesign em Foco
Doe para a Webdesign em Foco
Suporte da Webdesign em Foco
Fechar

Data Science and Machine Learning - #21 Aplicação Real VI (Gráficos)

04/09/2021

Nesse tutorial aprenderemos como plotar gráficos utilizando a lib Plotly através de uma aplicação real no Python.

Plotando gráficos com Matplotlib

Vamos começar instalando a lib Plotly.

pip install plotly
python manage.py runserver

app/templates/index.html

Vamos criar uma div para receber os gráficos.

<div class="graph col-10 m-auto">
    {% autoescape off %}
     {{grafico}}
    {% endautoescape %}
</div>

app/views.py

Na views vamos importar a lib Plotly e exportar os dados para o template:

import plotly.offline as py
import plotly.graph_objs as go

def home(request):
    #data['dados']=df[(df['release_year']>2009) & (df['country']=='Brazil')]\
    counter = 0
    list = []
    rows = len(df.index)

    while(counter < rows):
        list.append("Detalhes")
        counter+=1
    df['links']=list

    trace = go.Bar(
        x=df.sort_values(by='release_year')['release_year'].unique(),
        y=df.groupby('release_year')['title'].count()
    )
    datas=[trace]
    data['grafico']=py.plot(datas,output_type='div')
    """trace = go.Pie(
        labels=df['type'].unique(),
        values=df.groupby('type')['title'].count()
    )"""
    datas = [trace]
    data['grafico'] = py.plot(datas, output_type='div')

    data['dados']=df[['title','country','links']]\
        .dropna()\
        .head(20)\
        .to_html(render_links=True, escape=False,classes=['table','table-striped','mt-5'])
    data['countryFilter']=df['country'].sort_values().unique()
    return render(request,'index.html',data)

def countryFilter(request):
    if request.body:
        field = json.loads(request.body.decode('utf-8'))
        search = field['country']
        title = field['title']
        df2=df.dropna()

        data['grafico']={
            'x':df2[(df2['country'].str.contains(search))&(df2['title'].str.contains(title,flags=re.IGNORECASE))].sort_values(by='release_year')['release_year'].unique().tolist(),
            'y':df2[(df2['country'].str.contains(search))&(df2['title'].str.contains(title,flags=re.IGNORECASE))].groupby('release_year')['title'].count().to_list()
        }

        data['dados']=df2[(df2['country'].str.contains(search))&(df2['title'].str.contains(title,flags=re.IGNORECASE))]\
        .to_html(index=False,classes=['table','table-striped','mt-5'])
        return JsonResponse({'data':data['dados'],'graph':data['grafico']})

app/templates/main.html

Vamos instalar a lib javascript do Plotly para trabalhar com ajax:

<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>

app/static/js/javascript.js

No javascript.js faremos o nosso ajax:

(function(win,doc){
    'use strict';

    doc.querySelector('.btn').addEventListener('click',async(event)=>{
        event.preventDefault();
        let req=await fetch('http://localhost:8000/countryFilter/',{
            method:'POST',
            headers:{
                'Accept':'application/json',
                'Content-Type':'application/json',
                'X-CSRFToken':doc.querySelectorAll('input')[0].value
            },
            body:JSON.stringify({
                'country':doc.querySelector('#country').value,
                'title':doc.querySelector('#title').value,
            })
        });
        let res=await req.json();
        doc.querySelector('.result').innerHTML=res.data;

        let graph = doc.querySelector('.graph');
        Plotly.newPlot( graph, [{
        x: res.graph.x,
        y: res.graph.y,
        type:'bar'
        }] );
    },false);

})(window,document);

Por hoje é só! Sucesso nos códigos e na vida!

Receba as aulas da Webdesign em Foco em Seu Email
Suporte Webdesign em Foco

Posts Relacionados

Data Science and Machine Learning - #20 Aplicação Real V (Detalhes)
Nesse tutorial iremos exemplificar como tratar as colunas do nosso Data Frame e como implementar botões de ações na tabela.
Saiba mais!
Data Science and Machine Learning - #22 Paginação
Na aula de hoje vou explicar como inserir paginação dos dados utilizando Pandas dentro do Python através de uma aplicação web.
Saiba mais!
Python
Nesta seção aprofundaremos os conhecimentos sobre uma das linguagens em maior ascenção no mercado, o Python.
Saiba mais!