[Data Visualization] 使用Python Plotly库实现掷1个骰子的直方图绘制
一、内容实现概述
本文主要讲述使用Python的Plotly绘图库绘制掷1个6面骰子多次后的直方图结果
Matplot绘制过程如下:
- 导入random库、plotly库以及绘制直方图的Bar()方法
- 调用random库的randint()随机方法在1-6的整数中随机取一个值,并记录每次随机值的结果(本实现对投掷结果进行了类封装)
- 统计1-6点出现的频次
- 调用库的Bar()方法传入6面骰子投掷结果,并进行直方图绘制
- 调用库的plot()方法,进行展示
注:
-
- 在Python中使用(导入)Plotly绘图库时,需要先安装,本实现使用的是pip命令安装。pip install plotly
- Plotly教程
二、代码实现
注:源代码地址
Dice骰子类
from random import randint class Dice: """表示一个骰子类""" def __init__(self, side=6): self.side = side def roll(self): return randint(1, self.side)
# 主题:绘制掷一个6面骰子100次的直方图 from dice import Dice from plotly.graph_objs import Bar, Layout from plotly import offline import plotly.express as px # 第一步:记录每次掷骰子的结果 dice_instance = Dice() roll_dice_times = 100 roll_dice_result = [] dice_frequency = [] ## 投掷一个6面的骰子100次 for i in range(roll_dice_times): result = dice_instance.roll() roll_dice_result.append(result) ## 统计1-6点出现的次数 for points in range(1, dice_instance.side + 1): frequency = roll_dice_result.count(points) dice_frequency.append(frequency) # 第二步:将掷骰子的所有结果用直方图表示 ## 第一种实现方式 x_values = list(range(1, dice_instance.side + 1)) data = [Bar(x=x_values, y=dice_frequency)] x_axis_config = {'title': "面数"} y_axis_config = {'title': "面数出现的次数"} layoutObj = Layout(title="掷一个6面骰子100次的结果分布情况", xaxis = x_axis_config, yaxis = y_axis_config) figure = {'data': data, 'layout': layoutObj} offline.plot(figure, filename='one_6_side_dice.html') ## 第二种实现方式 fig = px.bar(x=x_values, y=dice_frequency) fig.show()
三、运行结果
第一种实现方式的结果
第二种实现方式的结果