文章

Python 投掷骰子,并用pygal制图画出统计结果

首先是diee.py文件

#coding:gbk

from random import randint

class Die():
	'''创建一个骰子的类'''

	def __init__(self,num=6):
		'''骰子默认面为6'''
		self.num = num
		
	def roll(self):
		return randint(1,self.num)

然后是die文件

#coding:gbk
import pygal#需要画图的时候添加的导pygal模块
from diee import Die
	#创建一个6面的骰子
die = Die()
	
	#投掷几次骰子,结果存储于列表
	
results = []
for roll_num in range(1000):
	result = die.roll()
	results.append(result)
#分析结果
fre=[]
for value in range(1,die.num+1):#遍历可能的点数,因为range差一属性,我们需要+1
	fres = results.count(value)#计算每种点数在results里出现的次数并赋值给fres
	fre.append(fres)
	
#print(fre)

#对结果进行可视化

hist = pygal.Bar()

hist.title = 'Rolling one D6 1000 times.'
hist.xlabels = ['1','2','3','4','5','6']
hist.x_title = 'Result'
hist.y_title = 'Frequency of result'

hist.add('D6',fre)
hist.render_to_file('die_visual.svg')

'''首先我们在文件最开始导入了pygal模块,在下面的对结果可视化部分做一下说明:
创建一个pygal.Bar()的实例,将其存储在hist中
给hist的属性title标题设置一下,将骰子D6的可能结果用作X轴的标签
然后我们使用add()将一系列值添加到图表中,还传递了一个列表fre,其中包含了将出现在图表中的值
最后将这个图表渲染成一个svg文件,这种文件的拓展名必须为svg
运行之后我们是看不到图表的,程序会在根目录下生成一个svg的文件,用浏览器打开查看
pygal生成的图表具有交互性,如果你将鼠标指向图表中的任何条形,将会看到与之相关联的数据
由于用python需要选择你喜欢的第三方模块,所以可以自由选择,目前也有很多大神做了一些更方便
和更牛X的模块提供大家选择,大家可以自己去网上搜索一下.
这样导致了每一个模块所提供的指令可能都未必相同,所以图形更需要多练习
在需要制图的一些作业方向和相关的作业人员,他们需要经常使用这些指令,所以很快可以上手

下边的同时投掷两个骰子,我就不多做解释了,我也只是看一看就丢一边了,我们应该把中心偏向自己
目前更需要学习的地方,和自己感兴趣的point.当我们需要制图的时候,只需要去找一个自己喜欢的
模块,然后学习他的用法便可以制图了

为此我特别找了一个画图的模块,开发团队是国人,所以学习文档很友好
界面也美观多了,大家可以看看这家伙的交互界面和CODE
http://pyecharts.org/#/zh-cn/prepare

原文来自:Python 投掷骰子,并用pygal制图画出统计结果,尊重自己,尊重每一个人;转发请注明来源!
0 0

发表评论