Plotly - Gráfico de Barras e Gráfico de Pizza

Neste capítulo, aprenderemos a fazer gráficos de barras e setores com a ajuda do Plotly. Vamos começar entendendo sobre o gráfico de barras.

Gráfico de barras

Um gráfico de barras apresenta dados categóricos com barras retangulares com alturas ou comprimentos proporcionais aos valores que representam. As barras podem ser exibidas verticalmente ou horizontalmente. Ajuda a mostrar comparações entre categorias discretas. Um eixo do gráfico mostra as categorias específicas sendo comparadas e o outro eixo representa um valor medido.

O exemplo a seguir traça um simples bar chartsobre o número de alunos matriculados em diferentes cursos. ogo.Bar() A função retorna um traço de barra com coordenada x definida como lista de assuntos ey coordenada y como número de alunos.

import plotly.graph_objs as go
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23,17,35,29,12]
data = [go.Bar(
   x = langs,
   y = students
)]
fig = go.Figure(data=data)
iplot(fig)

A saída será como mostrado abaixo -

Para exibir um gráfico de barras agrupado, o barmode propriedade do objeto Layout deve ser definida como group. No código a seguir, vários traços representando os alunos em cada ano são plotados em relação aos assuntos e mostrados como um gráfico de barras agrupado.

branches = ['CSE', 'Mech', 'Electronics']
fy = [23,17,35]
sy = [20, 23, 30]
ty = [30,20,15]
trace1 = go.Bar(
   x = branches,
   y = fy,
   name = 'FY'
)
trace2 = go.Bar(
   x = branches,
   y = sy,
   name = 'SY'
)
trace3 = go.Bar(
   x = branches,
   y = ty,
   name = 'TY'
)
data = [trace1, trace2, trace3]
layout = go.Layout(barmode = 'group')
fig = go.Figure(data = data, layout = layout)
iplot(fig)

O resultado do mesmo é o seguinte -

o barmodepropriedade determina como as barras na mesma coordenada de localização são exibidas no gráfico. Os valores definidos são "pilha" (barras empilhadas umas sobre as outras), "relativas", (as barras são empilhadas umas sobre as outras, com valores negativos abaixo do eixo, valores positivos acima), "group"(barras plotadas lado a lado).

Alterando a propriedade barmode para 'stack'o gráfico traçado aparece como abaixo -

Gráfico de pizza

Um gráfico de pizza exibe apenas uma série de dados. Pie Charts mostra o tamanho dos itens (chamados wedge) em uma série de dados, proporcional à soma dos itens. Os pontos de dados são mostrados como uma porcentagem de toda a pizza.

o pie() função em graph_objs módulo - go.Pie(), retorna um traço de pizza. Dois argumentos necessários sãolabels e values. Deixe-nos traçar um gráfico de pizza simples de cursos de línguas vs número de alunos, como no exemplo dado aqui.

import plotly
plotly.tools.set_credentials_file(
   username = 'lathkar', api_key = 'U7vgRe1hqmRp4ZNf4PTN'
)
from plotly.offline import iplot, init_notebook_mode
init_notebook_mode(connected = True)
import plotly.graph_objs as go
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23,17,35,29,12]
trace = go.Pie(labels = langs, values = students)
data = [trace]
fig = go.Figure(data = data)
iplot(fig)

A seguinte saída é exibida no notebook Jupyter -

Donut charté um gráfico de pizza com um orifício redondo no centro que o faz parecer um donut. No exemplo a seguir, dois gráficos de rosca são exibidos no layout de grade 1X2. Enquanto 'labelO layout é o mesmo para os traços de pizza, o destino da linha e da coluna de cada subplot é decidido pela propriedade do domínio.

Para tanto, usamos os dados de assentos partidários e a participação nos votos nas eleições parlamentares de 2019. Insira o seguinte código na célula do notebook Jupyter -

parties = ['BJP', 'CONGRESS', 'DMK', 'TMC', 'YSRC', 'SS', 'JDU','BJD', 'BSP','OTH']
seats = [303,52,23,22,22,18,16,12,10, 65]
percent = [37.36, 19.49, 2.26, 4.07, 2.53, 2.10, 1.46, 1.66, 3.63, 25.44]
import plotly.graph_objs as go
data1 = {
   "values": seats,
   "labels": parties,
   "domain": {"column": 0},
   "name": "seats",
   "hoverinfo":"label+percent+name",
   "hole": .4,
   "type": "pie"
}
data2 = {
   "values": percent,
   "labels": parties,
   "domain": {"column": 1},
   "name": "vote share",
   "hoverinfo":"label+percent+name",
   "hole": .4,
   "type": "pie"
}
data = [data1,data2]
layout = go.Layout(
   {
      "title":"Parliamentary Election 2019",
      "grid": {"rows": 1, "columns": 2},
      "annotations": [
         {
            "font": {
               "size": 20
            },
            "showarrow": False,
            "text": "seats",
            "x": 0.20,
            "y": 0.5
         },
         {
            "font": {
               "size": 20
            },
            "showarrow": False,
            "text": "votes",
            "x": 0.8,
            "y": 0.5
         }
      ]
   }
)
fig = go.Figure(data = data, layout = layout)
iplot(fig)

O resultado do mesmo é dado abaixo -