Plotly - Dot Plots e Tabela

Aqui, aprenderemos sobre gráficos de pontos e função de tabela no Plotly. Em primeiro lugar, vamos começar com gráficos de pontos.

Dot Plots

Um gráfico de pontos exibe pontos em uma escala muito simples. Só é adequado para uma pequena quantidade de dados, pois um grande número de pontos fará com que pareça muito confuso. Os gráficos de pontos também são conhecidos comoCleveland dot plots. Eles mostram mudanças entre dois (ou mais) pontos no tempo ou entre duas (ou mais) condições.

Os gráficos de pontos são semelhantes aos gráficos de barras horizontais. No entanto, eles podem ser menos confusos e permitir uma comparação mais fácil entre as condições. A figura representa um traço de dispersão com o atributo de modo definido para marcadores.

O exemplo a seguir mostra a comparação da taxa de alfabetização entre homens e mulheres, conforme registrado em cada censo após a independência da Índia. Dois traços no gráfico representam a porcentagem de alfabetização de homens e mulheres em cada censo após 1951 até 2011.

from plotly.offline import iplot, init_notebook_mode
init_notebook_mode(connected = True)
census = [1951,1961,1971,1981,1991,2001, 2011]
x1 = [8.86, 15.35, 21.97, 29.76, 39.29, 53.67, 64.63]
x2 = [27.15, 40.40, 45.96, 56.38,64.13, 75.26, 80.88]
traceA = go.Scatter(
   x = x1,
   y = census,
   marker = dict(color = "crimson", size = 12),
   mode = "markers",
   name = "Women"
)
traceB = go.Scatter(
x = x2,
y = census,
marker = dict(color = "gold", size = 12),
mode = "markers",
name = "Men")
data = [traceA, traceB]
layout = go.Layout(
   title = "Trend in Literacy rate in Post independent India",
   xaxis_title = "percentage",
   yaxis_title = "census"
)
fig = go.Figure(data = data, layout = layout)
iplot(fig)

A saída seria conforme mostrado abaixo -

Tabela em Plotly

O objeto Table de Plotly é retornado por go.Table()função. O rastreamento de tabela é um objeto gráfico útil para visualização de dados detalhados em uma grade de linhas e colunas. A tabela está usando uma ordem de coluna principal, ou seja, a grade é representada como um vetor de vetores de coluna.

Dois parâmetros importantes de go.Table() função são header qual é a primeira linha da tabela e cellsque formam o resto das linhas. Ambos os parâmetros são objetos de dicionário. O atributo de valores dos cabeçalhos é uma lista de cabeçalhos de coluna e uma lista de listas, cada uma correspondendo a uma linha.

A personalização de estilo adicional é feita por linecolor, fill_color, font e outros atributos.

O código a seguir exibe a tabela de pontos do estágio round robin da recém-concluída Copa do Mundo de Críquete 2019.

trace = go.Table(
   header = dict(
      values = ['Teams','Mat','Won','Lost','Tied','NR','Pts','NRR'],
      line_color = 'gray',
      fill_color = 'lightskyblue',
      align = 'left'
   ),
   cells = dict(
      values = 
      [
         [
            'India',
            'Australia',
            'England',
            'New Zealand',
            'Pakistan',
            'Sri Lanka',
            'South Africa',
            'Bangladesh',
            'West Indies',
            'Afghanistan'
         ],
         [9,9,9,9,9,9,9,9,9,9],
         [7,7,6,5,5,3,3,3,2,0],
         [1,2,3,3,3,4,5,5,6,9],
         [0,0,0,0,0,0,0,0,0,0],
         [1,0,0,1,1,2,1,1,1,0],
         [15,14,12,11,11,8,7,7,5,0],
         [0.809,0.868,1.152,0.175,-0.43,-0.919,-0.03,-0.41,-0.225,-1.322]
      ],
      line_color='gray',
      fill_color='lightcyan',
      align='left'
   )
)
data = [trace]
fig = go.Figure(data = data)
iplot(fig)

O resultado é como mencionado abaixo -

Os dados da tabela também podem ser preenchidos a partir do dataframe do Pandas. Vamos criar um arquivo separado por vírgulas (points-table.csv) como abaixo -

Times Esteira Ganhou Perdido Amarrado NR Pts NRR
Índia 9 7 1 0 1 15 0,809
Austrália 9 7 2 0 0 14 0,868
Inglaterra 9 6 3 0 0 14 1.152
Nova Zelândia 9 5 3 0 1 11 0,175
Paquistão 9 5 3 0 1 11 -0,43
Sri Lanka 9 3 4 0 2 8 -0,919
África do Sul 9 3 5 0 1 7 -0,03
Bangladesh 9 3 5 0 1 7 -0,41
Teams,Matches,Won,Lost,Tie,NR,Points,NRR
India,9,7,1,0,1,15,0.809
Australia,9,7,2,0,0,14,0.868
England,9,6,3,0,0,12,1.152
New Zealand,9,5,3,0,1,11,0.175
Pakistan,9,5,3,0,1,11,-0.43
Sri Lanka,9,3,4,0,2,8,-0.919
South Africa,9,3,5,0,1,7,-0.03
Bangladesh,9,3,5,0,1,7,-0.41
West Indies,9,2,6,0,1,5,-0.225
Afghanistan,9,0,9,0,0,0,-1.322

Agora construímos um objeto dataframe a partir deste arquivo csv e o usamos para construir o rastreamento da tabela como abaixo -

import pandas as pd
df = pd.read_csv('point-table.csv')
trace = go.Table(
   header = dict(values = list(df.columns)),
   cells = dict(
      values = [
         df.Teams, 
         df.Matches, 
         df.Won, 
         df.Lost, 
         df.Tie, 
         df.NR, 
         df.Points, 
         df.NRR
      ]
   )
)
data = [trace]
fig = go.Figure(data = data)
iplot(fig)