Python开发【模块】:Pygal 绘制直方图

Pygal

  Pygal可用来生成可缩放的矢量图形文件,对于需要在尺寸不同的屏幕上显示的图表,这很有用,可以自动缩放,自适应观看者的屏幕

1、Pygal模块安装

① Windows系统

# Pygal模块安装

$ pip3 install pygal

② Linux和OS X系统

# Pygal模块安装

$ pip install --user pygal==1.7

2、Pygal画廊-直方图

  模拟掷骰子,分析最后的结果,生成图形

创建die.py筛子类文件:

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)

创建die_visual.py文件,生成直方图:

from die import Die
import pygal

die = Die()

# 数据集合
results = []
count = 1
for roll_num in iter(lambda *args:die.roll(),None):
    results.append(roll_num)
    if count >= 1000:
        break
    count +=1

# 分析结果
frequencies= []
for value in range(1,die.num_sides+1):
    frequencie = results.count(value)
    frequencies.append(frequencie)

# 对结果进行可视化
hist = pygal.Bar()      # 生成实例
hist.title = ‘Results of rolling one D6 1000 times‘  # 标题
hist.x_labels = [‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘]           # X轴数值坐标
hist.x_title = ‘Result‘                                 # X轴标题
hist.y_title = ‘Frequency of Result‘                # Y轴标题

hist.add(‘D6‘,frequencies)                             # 传入Y轴数据
hist.render_to_file(‘die_visual.svg‘)               # 文件生成路径,必须为svg格式文件

通过浏览器打开die_visual.svg文件:

3、同时掷两枚骰子

修改die_visual.py文件:

from die import Die
import pygal

die1 = Die()
die2 = Die()

# 数据集合
results = []
for i in range(5000):
    result = die1.roll() + die2.roll()
    results.append(result)

# 分析结果
frequencies= []
for value in range(2,die1.num_sides+die2.num_sides+1):
    frequencie = results.count(value)
    frequencies.append(frequencie)

# 对结果进行可视化
hist = pygal.Bar()      # 生成实例
hist.title = ‘Results of rolling one D6 5000 times‘  # 标题
hist.x_labels = [‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘,‘10‘,11,12]           # X轴数值坐标
hist.x_title = ‘Result‘                                 # X轴标题
hist.y_title = ‘Frequency of Result‘                # Y轴标题

hist.add(‘D6+D6‘,frequencies)                             # 传入Y轴数据
hist.render_to_file(‘die_visual.svg‘)               # 文件生成路径,必须为svg格式文件

浏览器浏览图形die_visual.svg:

时间: 2024-10-29 14:27:44

Python开发【模块】:Pygal 绘制直方图的相关文章

python开发模块基础:os&sys

一,os模块 os模块是与操作系统交互的一个接口 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 4 ''' 5 os.walk() 显示目录下所有文件和子目录以元祖的形式返回,第一个是目录,第二个是文件夹,第三个是文件 6 open(r'tmp\inner\file',w) 创建文件 7 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 可以先记录当前文件目录 8 os.chdir("dirname") 改

python开发模块基础:re正则

一,re模块的用法 #findall #直接返回一个列表 #正常的正则表达式 #但是只会把分组里的显示出来#search #返回一个对象 .group()#match #返回一个对象 .group() 1 import re 2 #re模块的用法 3 4 ret = re.findall('a', 'eva egon yuan') # 返回所有满足匹配条件的结果,放在列表里 5 print(ret) #结果 : ['a', 'a'] 6 7 ret = re.search('a', 'eva e

python开发模块基础:序列化模块json,pickle,shelve

一,为什么要序列化 # 将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化'''比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给?现在我们能想到的方法就是存在文件里,然后另一个python程序再从文件里读出来.但是我们都知道,对于文件来说是没有字典这个概念的,所以我们只能将数据转换成字典放到文件中.你一定会问,将字典转换成一个字符串很简单,就是str(dic)就可以办到了,为什么我们还要学习序列化模块呢?没错序列化的过程就是从dic 变成str(dic)的

python开发模块基础:collections模块

一,collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict.namedtuple和OrderedDict等.1.namedtuple: 生成可以使用名字来访问元素内容的tuple2.deque: 双端队列,可以快速的从另外一侧追加和推出对象3.Counter: 计数器,主要用来计数4.OrderedDict: 有序字典5.defaultdict: 带有默

python开发模块基础:正则表达式&re模块

一,正则表达式 1.字符组:[0-9][a-z][A-Z] 在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示字符分为很多类,比如数字.字母.标点等等.假如你现在要求一个位置"只能出现一个数字",那么这个位置上的字符只能是0.1.2...9这10个数之一.可以写成这种 [0-5a-eA-Z] 取范围的匹配 2.字符 1 #!/usr/bin/python env 2 #_*_coding:utf-8_*_ 3 4 . 匹配除换行符以外的任意字符 5 \w 匹配字母

Python模块-pygal之First steps

pygal安装 在OS X系统中,敲入终端命令: pip install pygal 在Pycharm编译器中导入pygal模块: Pygal模块可生成可缩放的矢量图形文件.对于需要在不同的屏幕上显示的图标,这很有用,因为它们将自动缩放,以适合观看者的屏幕.如果你打算以在线方式使用图标,请考虑使用Pygal来生成它们,这样它们在任何设备上显示时都会很美观 生成条形图: import pygal '''绘制条形图 多图横向排列''' bar_chart = pygal.Bar() bar_char

Window上python开发--4.Django的用户登录模块User

在搭建网站和web的应用程序时,用户的登录和管理是几乎是每个网站都必备的.今天主要从一个实例了解以下django本身自带的user模块.本文并不对user进行扩展. 主要使用原生的模块. 1.User模块基础: 在使用user 之前先import到自己的iew中.相当与我们自己写好的models.只不过这个是系统提供的models. from django.contrib.auth.models import User # 导入user模块 1.1User对象属性 User 对象属性:usern

转 《python开发_常用的python模块及安装方法》

http://www.cnblogs.com/hongten/p/hongten_python_more_modules.html adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctypes:用来调用动态链接库DBUtils:数据库连接池django:一个WEB frameworkdocutils:用来写文档的dpkt:数据包的解包和组包MySQLdb:

Python开发【第六篇】:模块

模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块. 如:os 是系统相关的模块:file是文件操作相关的模块 模块分为三种: 自定义模块 第三方模块 内置模块 自定义模块 1.定义模块 情景一: 情景二: 情景三: 2.导入模块 Python之所以应用越来越广泛,