数据可视化----------------------------生成数据学习(三)

本文通过创建骰子类并模拟掷骰子实验,利用Pygal生成直方图,展示了不同情况下掷骰子结果的频率分布。实验包括掷一个六面骰子、两个六面骰子以及一个六面骰子和一个十面骰子的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装pygal,打开命令窗口:

显示成功安装就可以了。

1.创建die类:

#-*-coding:GBK-*-
#-*-coding:utf-8-*-
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)

在这个类就存在一个roll方法,返回1到自定义的值得随机整数。‘假设我们扔骰子。

#-*-coding:GBK-*-
#-*-coding:utf-8-*-
from die import Die
die=Die()
results=[]
for roll_num in range(100):
	result=die.roll()
	results.append(result)
	
print(results)

 结果:

随机扔骰子100,可能出现的结果,

分析结果:

#-*-coding:GBK-*-
#-*-coding:utf-8-*-
from die import Die
die=Die()
results=[]
for roll_num in range(1000):
	result=die.roll()
	results.append(result)
#分析结果
frequencies=[]
for value in range(1,die.num_sides+1):
	frequency=results.count(value)
	frequencies.append(frequency)
		
print(frequencies)

针对上面,用图表的格式表示:

1.直方图

#-*-coding:GBK-*-
#-*-coding:utf-8-*-
from die import Die
import pygal
die=Die()
results=[]
for roll_num in range(1000):
	result=die.roll()
	results.append(result)
#分析结果
frequencies=[]
for value in range(1,die.num_sides+1):
	frequency=results.count(value)
	frequencies.append(frequency)
#对结果进行可视化处理
hist=pygal.Bar()
hist.title='Results of rolling one D6 1000 times.'
hist.x_labels=['1','2','3','4','5','6']
hist.x_title="Results"
hist.y_title="frequencies of results"
hist.add('D6',frequencies)
hist.render_to_file('die_visual.svg')

生成的svg文件,使用浏览器打开

同时扔两个骰子 

#-*-coding:GBK-*-
#-*-coding:utf-8-*-
from die import Die
import pygal
die_1=Die()
die_2=Die()
results=[]
for roll_num in range(1000):
	result=die_1.roll()+die_2.roll()
	results.append(result)
#分析结果
frequencies=[]
max_result=die_1.num_sides+die_2.num_sides
for value in range(2,max_result+1):
	frequency=results.count(value)
	frequencies.append(frequency)
#对结果进行可视化处理
hist=pygal.Bar()
hist.title='Results of rolling two D6 1000 times.'
hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12']
hist.x_title="Results"
hist.y_title="frequencies of results"
hist.add('D6+D6',frequencies)
hist.render_to_file('dice_visual.svg')

同时扔面数不同的骰子;:

#-*-coding:GBK-*-
#-*-coding:utf-8-*-
from die import Die
import pygal
die_1=Die()
die_2=Die(10)
results=[]
for roll_num in range(1000):
	result=die_1.roll()+die_2.roll()
	results.append(result)
#分析结果
frequencies=[]
max_result=die_1.num_sides+die_2.num_sides
for value in range(2,max_result+1):
	frequency=results.count(value)
	frequencies.append(frequency)
#对结果进行可视化处理
hist=pygal.Bar()
hist.title='Results of rolling D6+D10 1000 times.'
hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12','13','14','15','16']
hist.x_title="Results"
hist.y_title="frequencies of results"
hist.add('D6+D10',frequencies)
hist.render_to_file('dice_visual.svg')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值