使⽤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小时内删除。
发表评论