使⽤python实现模拟掷骰⼦数据分析
Data:2020/4/8
主题:模拟实现掷骰⼦数据分析
编译环境:pycharm
库:pygal
说明:
  code 1:创建⼀个掷骰⼦类对象,类⽅法获得掷骰⼦随机数1-6,默认6个⾯,模拟20次将结果(每次点数、每⾯出现的频次)打印。  code 2:对code代码的扩展,只要是为了将获取的数据图形可视化,⽽不仅仅只是将数据打印出来。(显⽰类型:直⽅图、百分⽐图  圆环图,⽔平直⽅图、折线图)
注意:这⾥我只⽣成⼀个⽂件:'die_visual.svg',所以现在这段代码2,⽣成图形是最后⼀次更新的数据图形,你们再做的时候,如果同  时查看各种图形显⽰,可以⽣成不同的.svg⽂件。
#----------------------------------------------------------------------------------------------------------------
code 1:
import pygal
from random import randint
class Die():                              #表⽰⼀个掷筛⼦的类
def __init__(self, num_sides =6):
self.num_sides = num_sides
def roll(self):
return randint(1, self.num_sides)  #返回值:1-6之间的随机数(任何整数)
die =Die()                                #实例化
results = []
for roll_num in range(20):            #含义:从0-20依次取值,取20次,因此执⾏20次赋值
result = ll()
results.append(result)
print(results)
frequencies = []
for value in range(1,die.num_sides+1):    #现在值得范围1-6
frequency = unt(value)      #计算列表中value出现的次数
frequencies.append(frequency)        #将次数添加到列表中
print(frequencies)
#--------------------------------------------------------
结果:
[3, 6, 5, 6, 1, 6, 4, 3, 1, 5, 2, 3, 2, 5, 3, 6, 1, 2, 6, 6]    #20次模拟出现的点数值
[3, 3, 4, 1, 3, 6] 
                          #点数依次出现的次数
#--------------------------------------------------------
#code 2:
import pygal
from pygal import *                        #导⼊模块中的所有类
from random import randint
class Die():                              #表⽰⼀个掷筛⼦的类
def __init__(self, num_sides =6):
self.num_sides = num_sides
def roll(self):
return randint(1, self.num_sides)  #调⽤库randint()⽅法;返回值:1-6之间的随机数
die =Die()                                #实例化
results = []
for roll_num in range(100):  #含义:从0-100依次取值,取100次,因此执⾏100次赋值
result = ll()
results.append(result)
#print(results)                          #打印每次随机数值
frequencies = []
for value in range(1,die.num_sides+1):    #现在值得范围1-6
frequency = unt(value)      #计算列表中value出现的次数
frequencies.append(frequency)        #将次数添加到列表中
print(frequencies)                        #打印频次次数
hist = pygal.Bar()                        #对结果可视化
hist.title = "掷骰⼦100次每⾯出现的次数"    #设置直⽅图标题
hist.x_labels =['1','2','3','4','5','6']  #x轴标签
hist.x_title ="结果"                      #x轴标题
hist.y_title = "频次"                      #y轴标题
hist.add('D6',frequencies)
#计算100次⾯频次/总次数
pie = Pie()
pie.title = "100次掷骰⼦⽐例图"            #百分⽐图
pie.add('D1',frequencies[0]/100)
pie.add('D2',frequencies[1]/100)
pie.add('D3',frequencies[2]/100)
pie.add('D4',frequencies[3]/100)
pie.add('D5',frequencies[4]/100)
pie.add('D6',frequencies[5]/100)
circle = Pie(inner_radius =0.6)          #圆环图
circle.title = "100次掷骰⼦⽐例图"
circle.add('D1',frequencies[0])
circle.add('D2',frequencies[1])
circle.add('D3',frequencies[2])
python生成1到100之间随机数circle.add('D4',frequencies[3])
circle.add('D5',frequencies[4])
circle.add('D6',frequencies[5])
bar =HorizontalBar()                      #⽔平条形图
bar.title ='掷骰⼦条形图'
bar.add('D1',frequencies[0])
bar.add('D2',frequencies[1])
bar.add('D3',frequencies[2])
bar.add('D4',frequencies[3])
bar.add('D5',frequencies[4])
bar.add('D6',frequencies[5])
spot =XY(stroke = False)                #这部分模拟离散坐标点
spot.title = '散点图'
spot_x =[(3,2),(1,2),(3,8),(5,7),(6,14)]
spot.add('D6',spot_x)
line = Line()
line._title="掷骰⼦折线图"
line.x_labels =map(str,range(1,7))      #range:7为结束的范围
line.add('频次数',[frequencies[0],frequencies[1],frequencies[2],frequencies[3],frequencies[4],frequencies[5]]) der_to_file('die_visual.svg')
#结果:
直⽅图
⽐例图:
圆环图:
⽔平条形图:折线图:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。