Neste tutorial, aprenderemos como usar o Plotly para criar visualizações interativas. Nosso projeto se concentra na análise dos resultados do lançamento de dados. Ao lançar um único dado de seis faces, qualquer número de 1 a 6 tem chances iguais de aparecer. No entanto, quando você lança vários dados, alguns números se tornam mais prováveis do que outros. Nosso objetivo é determinar essas probabilidades simulando lançamentos de dados e criando um conjunto de dados. Depois disso, representaremos visualmente os resultados de vários lançamentos para mostrar quais resultados são estatisticamente mais prováveis.
Plotly é uma biblioteca gráfica de código aberto que permite aos usuários criar visualizações interativas baseadas na web. Ele oferece suporte a muitos tipos de gráficos, incluindo gráficos de linhas, gráficos de dispersão, gráficos de barras e muito mais. Plotly é especialmente útil para criar visualizações que podem ser incorporadas em aplicativos da web, pois oferece recursos interativos como zoom, panorâmica e informações de foco.
Instalaremos o Plotly usando pip. Também precisamos instalar o pandas, uma biblioteca para trabalhar com dados de forma eficiente, pois o Plotly Express depende disso.
$ python -m pip install --user plotly $ python -m pip install --user pandas
Visite a galeria de tipos de gráficos no site do Plotly para ver as diferentes visualizações que você pode criar com o Plotly.
Primeiro, criaremos a seguinte classe Die para simular o lançamento de um dado. Chamaremos o arquivo de Die.py.
from random import randint class Die: """A class representing a single die.""" def __init__(self, num_sides = 6): """Assume a six-sided die""" self.num_sides = num_sides def roll(self): """Return a random value between 1 and number of sides.""" return randint(1, self.num_sides)
O método __ init __ recebe um argumento opcional. Quando uma instância de Die é criada, o número de lados será seis se nenhum argumento for fornecido. Se um argumento for fornecido, ele definirá o número de lados do dado.
O método roll() usa a função randint() para retornar um número aleatório entre 1 e o número de lados. Esta função pode retornar o valor inicial (1), o valor final (num_sides) ou qualquer número inteiro intermediário. Os dados são nomeados de acordo com o número de lados: um dado de seis lados é chamado de D6, um dado de dez lados é chamado de D10 e assim por diante.
Primeiro importamos o módulo Plotly Express usando o alias px para evitar digitar plotly.express repetidamente. Criaremos uma instância de um dado para simular o lançamento de dois dados D8. Chamamos esse arquivo de dice_visual.py.
import plotly.express as px from die import Die # Create two D8. die_1 = Die(8) die_2 = Die(8) # Make some rolls, and store results in a list. results = [] for roll_num in range(500_000): result = die_1.roll() die_2.roll() results.append(result)
O menor resultado possível é a soma do menor número em cada dado (2). O maior resultado possível é a soma do maior número em cada dado (16) atribuído a max_results. A variável max_result melhora a legibilidade do código para gerar poss_results. Poderíamos ter escrito intervalo (2,16), mas isso funcionaria apenas para dois dados D8. Ao simular circunstâncias do mundo real, é melhor desenvolver um código que possa lidar prontamente com uma ampla variedade de cenários.
# Analyze the result. frequencies = [] max_results = die_1.num_sides die_2.num_sides poss_results = range(2, max_results 1) for value in poss_results: frequency = results.count(value) frequencies.append(frequency)
Definimos o título e o atribuímos a 'título'. Criamos um dicionário para especificar rótulos de eixos. As chaves do dicionário representam os rótulos que queremos personalizar, enquanto os valores representam os rótulos personalizados que queremos usar. Chamamos o eixo x de 'Resultado' e o eixo y de 'Frequência do Resultado'. Para construir um gráfico de barras, usamos a função px.bar() e passamos as variáveis opcionais 'title' e 'labels'.
# Visualize the results. title = "Results of Rolling Two D8 Dice 500,000 Times" labels = {'x': 'Result', 'y': 'Frequency of Result'} fig = px.bar(x = poss_results, y = frequencies, title = title, labels = labels) fig.show()
O gráfico é gerado com título e rótulos apropriados para cada eixo, conforme imagem abaixo.
Há um problema que precisamos resolver com o enredo que acabamos de criar. Como existem 11 barras, as configurações padrão de layout do eixo x deixam algumas barras sem rótulos. Embora as configurações padrão sejam adequadas para a maioria das visualizações, este gráfico ficaria melhor com todas as barras rotuladas.
Plotly oferece um método update_layout() que permite fazer várias alterações em uma figura após ela ter sido criada. Veja como você pode instruir o Plotly a dar a cada barra seu próprio rótulo.
# Further customize chart. fig.update_layout(xaxis_dtick = 1) fig.show() #fig.write_html('dice_visual_d6d10.xhtml')
O método update_layout() se aplica ao objeto fig, que representa o gráfico inteiro. Usamos a opção xaxis_dtick para definir a distância entre as marcas de escala no eixo x. Definimos o espaçamento como 1 para que cada barra seja rotulada. Ao executar dice_visual.py novamente, você deverá ver rótulos em cada barra.
Este código pode ser facilmente personalizado para simular o lançamento de dados de diferentes tamanhos. Para criar um D6 e um D10, passe os argumentos 6 e 10 ao criar as duas instâncias do dado. Altere o primeiro loop para o número desejado de lançamentos e altere o título do gráfico de acordo.
Podemos fazer com que nosso programa salve o gráfico como um arquivo HTML automaticamente, substituindo a chamada para fig.show() por uma chamada para fig.write_html().
O método write_html() requer um argumento: o nome do arquivo no qual gravar. Se você fornecer apenas um nome de arquivo, o arquivo será salvo no mesmo diretório que o arquivo .py. Você também pode chamar write_html() com um objeto Path para salvar o arquivo de saída em qualquer lugar do seu sistema.
Aqui está o código completo:
import plotly.express as px from die import Die # Create two D8. die_1 = Die(8) die_2 = Die(8) # Make some rolls, and store results in a list. results = [] for roll_num in range(500_000): result = die_1.roll() die_2.roll() results.append(result) # Analyze the result. frequencies = [] max_results = die_1.num_sides die_2.num_sides poss_results = range(2, max_results 1) for value in poss_results: frequency = results.count(value) frequencies.append(frequency) # Visualize the results. title = "Results of Rolling Two D8 Dice 500,000 Times" labels = {'x': 'Result', 'y': 'Frequency of Result'} fig = px.bar(x = poss_results, y = frequencies, title = title, labels = labels) # Further customize chart. fig.update_layout(xaxis_dtick = 1) fig.write_html('dice_visual.xhtml')
Para maior clareza, as listagens nesta seção usam a forma longa de loops for. Podemos refatorar o código usando compreensões de lista para um ou ambos os loops. Aqui está o código usando compreensão de lista:
import plotly.express as px from die import Die # Create two D8. die_1 = Die(8) die_2 = Die(8) # Make some rolls, and store results in a list. results = [die_1.roll() die_2.roll() for roll_num in range(500_000) ] # Analyze the result. max_results = die_1.num_sides die_2.num_sides poss_results = range(2, max_results 1) frequencies = [results.count(value) for value in poss_results] # Visualize the results. title = "Results of Rolling Two D8 Dice 500,000 Times" labels = {'x': 'Result', 'y': 'Frequency of Result'} fig = px.bar(x = poss_results, y = frequencies, title = title, labels = labels) # Further customize chart. fig.update_layout(xaxis_dtick = 1) fig.write_html('dice_visual_list_comprehension.xhtml')
Concluindo, analisar e apresentar dados estatísticos torna-se poderoso e envolvente com o Plotly para visualização interativa de dados de lançamento de dados. Ao simular lançamentos de dados e visualizar os resultados, podemos compreender melhor as probabilidades de diferentes resultados. Os recursos interativos do Plotly, como informações de foco, panorâmica e zoom, aprimoram a experiência do usuário e tornam os dados mais acessíveis. Além disso, a capacidade de personalizar e salvar visualizações como arquivos HTML facilita seu compartilhamento e integração em aplicativos da web. Este artigo demonstra como usar os recursos do Plotly para criar gráficos informativos e atraentes. Plotly é uma excelente ferramenta para análise e apresentação de dados.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3