数据可视化

数据可视化

15.4使用plotly模拟掷骰子

die_visual.py

from plotly.graph_objs import Bar, Layout0, Layout
from plotly import offline

from die import Die
#创建1个D6,1个D10
die_1 = Die()
die_2 = Die(10)#10个面的骰子
#扔几次骰子并将结果存储在列表中
results = []
for roll_num in range(50_000):#投掷骰子1000次,才每次投出来的结果存储到results中
    result = die_1.roll() + die_2.roll()#计算每次的总次数
    results.append(result)

#分析结果
frequencies = []#存储投出来每个点数的总次数
max_result = die_1.num_sides + die_2.num_sides#将两个骰子的最大点数之和(12)存储max_result中
for value in range(2,max_result+1):#计算点数和从2到max_result各种点数的次数
    frequency = results.count(value)#统计每个点数出现的总次数
    frequencies.append(frequency)#结果添加到列表frequencies的末尾

#对结果进行可视化
x_values = list(range(2,max_result+1))#将可能出现的点数存储在列表x_values中
data = [Bar(x_values,y=frequencies)]#Bar()用于绘制条形图的数据集

x_axis_config = {'title':'结果','dtick':1}#x坐标轴标签
y_axis_config = {'title':'结果的概率'}#y轴坐标轴标签
my_layout = Layout(title='投掷1个6面骰子,一个10面骰子 50_000次的结果',#Layout返回一个图表布局和配置的对象,里面是(图表名称,x轴配置字典,y轴配置字典)
                   xaxis=x_axis_config,yaxis=y_axis_config)
offline.polt({'data':data,'layout':my_layout},filename = 'd6_d10.html')#polt(数据,布局,文件名)
print(frequencies)

die.py

from random import randint

class Die:
    '表示一个骰子的类'



    def __init__(self,num_sides=6):
        '骰子默认为六面'
        self.num_sides = num_sides

    def roll(self):
        '返回一个位于1和骰子面数之间的随机值'
        return randint(1,self.num_sides)

2021年5月24日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值