python数据可视化pygal模拟掷骰子实现示例

 更新时间:2022年06月25日 17:44:51   作者:Z_Y_H  
这篇文章主要为大家介绍了python数据可视化pygal模拟掷骰子实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

可视化包Pygal生成可缩放矢量图形文件

可以在尺寸不同的屏幕上自动缩放,显示图表

#安装pygal
pip install pygal
'''
想要了解Pygal可生成什么样的图表,可访问http://www.pygal.org/
单击document,点击chart types,每个示例都包含源代码
'''
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)
#掷骰子
die = Die()
#创建一个列表,将结果存储在一个列表中
results = []
 #投100次   
for roll_num in range(100):
    result = die.roll()
    results.append(result)
print(results)
[3, 4, 2, 2, 6, 5, 5, 5, 2, 3, 1, 4, 3, 2, 1, 2, 3, 6, 6, 5, 5, 3, 2, 3, 1, 1, 4, 1, 4, 6, 1, 6, 2, 3, 4, 6, 2, 5, 5, 1, 6, 1, 5, 4, 3, 3, 4, 5, 6, 3, 5, 1, 4, 3, 5, 6, 6, 6, 4, 6, 5, 6, 5, 4, 6, 3, 1, 4, 1, 4, 2, 1, 1, 4, 4, 4, 2, 3, 1, 4, 6, 2, 1, 5, 6, 2, 2, 6, 6, 3, 6, 2, 6, 6, 4, 4, 2, 1, 1, 6]

分析结果,计算每个点数出现的次数

frequencies = []
for value in range(1, die.num_sides+1):
    frequency = results.count(value)
    frequencies.append(frequency)
print(frequencies)
[10, 23, 13, 9, 26, 19]

绘制直方图

import pygal
hist = pygal.Bar()
hist.title = 'results of rolling one d6 100 times'
hist.x_lables = ['1', '2', '3', '4', '5', '6']
hist.x_title = 'result'
hist.y_title = 'frequency of result'
hist.add('d6', frequencies)
#将图渲染为SVG文件,需要打开浏览器,才能查看生成的直方图
hist.render_to_file('die_visual.svg')

同时投掷两个骰子

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)
#掷骰子
die1 = Die()
die2 = Die()
#创建一个列表,将结果存储在一个列表中
results = []
 #投100次   
for roll_num in range(100):
    result = die1.roll() + die2.roll()
    results.append(result)
print(results)
#分析结果,计算每个点数出现的次数
frequencies = []
max_result = die1.num_sides + die2.num_sides
for value in range(1, max_result+1):
    frequency = results.count(value)
    frequencies.append(frequency)
print(frequencies)
#绘制直方图
import pygal
hist = pygal.Bar()
hist.title = 'results of rolling one d6 dice 100 times'
hist.x_lables = ['2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
hist.x_title = 'result'
hist.y_title = 'frequency of result'
hist.add('d6 + d6', frequencies)
#将图渲染为SVG文件,需要打开浏览器,才能查看生成的直方图
hist.render_to_file('die_visual.svg')
[4, 7, 4, 5, 8, 4, 3, 6, 8, 9, 8, 11, 9, 11, 8, 8, 5, 6, 10, 5, 11, 7, 4, 3, 12, 12, 7, 2, 4, 9, 9, 5, 7, 10, 4, 7, 4, 6, 5, 6, 7, 2, 7, 9, 7, 6, 11, 5, 9, 6, 11, 4, 8, 10, 7, 9, 5, 4, 3, 7, 4, 10, 5, 7, 2, 6, 4, 2, 2, 5, 5, 9, 6, 3, 6, 10, 12, 7, 4, 11, 8, 6, 10, 5, 7, 5, 5, 7, 9, 4, 11, 6, 7, 8, 6, 11, 6, 4, 3, 12]
[0, 5, 5, 14, 13, 13, 15, 8, 9, 6, 8, 4]

同时投掷两个面数不同骰子

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)
#掷骰子
die1 = Die()
die2 = Die(10)
#创建一个列表,将结果存储在一个列表中
results = []
 #投100次   
for roll_num in range(100):
    result = die1.roll() + die2.roll()
    results.append(result)
print(results)
#分析结果,计算每个点数出现的次数
frequencies = []
max_result = die1.num_sides + die2.num_sides
for value in range(1, max_result+1):
    frequency = results.count(value)
    frequencies.append(frequency)
print(frequencies)
#绘制直方图
import pygal
hist = pygal.Bar()
hist.title = 'results of rolling one d10 dice 100 times'
hist.x_lables = ['2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14','15','16']
hist.x_title = 'result'
hist.y_title = 'frequency of result'
hist.add('d6 + d10', frequencies)
#将图渲染为SVG文件,需要打开浏览器,才能查看生成的直方图
hist.render_to_file('die_visual.svg')
[5, 3, 6, 13, 8, 9, 10, 11, 11, 4, 5, 14, 11, 10, 11, 8, 14, 12, 16, 8, 9, 11, 7, 11, 9, 2, 8, 9, 9, 10, 7, 8, 12, 11, 8, 12, 9, 9, 10, 11, 8, 14, 10, 12, 10, 7, 12, 5, 4, 8, 6, 7, 7, 11, 9, 16, 6, 13, 6, 10, 6, 7, 16, 9, 14, 5, 7, 12, 8, 9, 11, 11, 6, 11, 5, 8, 11, 16, 4, 10, 5, 10, 13, 4, 9, 9, 11, 9, 11, 13, 7, 13, 13, 5, 5, 4, 5, 3, 12, 14]
[0, 1, 2, 5, 9, 6, 8, 10, 13, 9, 15, 7, 6, 5, 0, 4]

以上就是python数据可视化pygal模拟掷骰子实现示例的详细内容,更多关于python pygal模拟掷骰子的资料请关注脚本之家其它相关文章!

相关文章

  • Python 操作pdf pdfplumber读取PDF写入Excel

    Python 操作pdf pdfplumber读取PDF写入Excel

    这篇文章主要介绍了Python 操作pdf pdfplumber读取PDF写入Excel,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以考察一下
    2022-08-08
  • Python优化列表接口进行分页示例实现

    Python优化列表接口进行分页示例实现

    最近,在做测试开发平台的时候,需要对测试用例的列表进行后端分页,在实际去写代码和测试的过程中,发现这里面还是有些细节的,故想复盘一下
    2021-09-09
  • python分布式库celery处理大规模的任务并行化

    python分布式库celery处理大规模的任务并行化

    Python中的分布式任务队列时,Celery是一个备受推崇的工具,它是一个功能强大的分布式系统,可用于处理大规模的任务并行化,本文将介绍Celery的基本概念、用法和示例代码,帮助读者更好地了解和使用这个库
    2024-01-01
  • 利用Python实现翻译HTML中的文本字符串

    利用Python实现翻译HTML中的文本字符串

    这篇文章主要为大家介绍了如何利用Python实现翻译HTML中的文本字符串功能,文中的示例代码讲解详细,感兴趣的小伙伴可以动手尝试一下
    2022-06-06
  • Python AES加密实例解析

    Python AES加密实例解析

    这篇文章主要介绍了Python AES加密实例解析,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Python装饰器入门学习教程(九步学习)

    Python装饰器入门学习教程(九步学习)

    装饰器(decorator)是一种高级Python语法。装饰器可以对一个函数、方法或者类进行加工。本文给大家介绍Python装饰器入门学习教程(九步学习),对python装饰器相关知识感兴趣的朋友一起学习吧
    2016-01-01
  • Python 如何读取.txt,.md等文本文件

    Python 如何读取.txt,.md等文本文件

    这篇文章主要介绍了Python 读取.txt,.md等文本文件的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • python匿名函数的使用方法解析

    python匿名函数的使用方法解析

    这篇文章主要介绍了python匿名函数的使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Python实现定时监测网站运行状态的示例代码

    Python实现定时监测网站运行状态的示例代码

    这篇文章主要介绍了Python实现定时监测网站状态的示例代码,帮助大家更好的管理自己的网站,感兴趣的朋友可以了解下
    2020-09-09
  • python获取栅格点和面值的实现

    python获取栅格点和面值的实现

    这篇文章主要介绍了python获取栅格点和面值的实现,具有很好的参考价值,希望对大家有多帮助。一起跟随小编过来看看吧
    2020-03-03

最新评论