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:

更多-》https://www.jianshu.com/p/08bf0efc3232
Python开发【模块】:Pygal 绘制直方图的更多相关文章
- python开发模块基础:re正则
一,re模块的用法 #findall #直接返回一个列表 #正常的正则表达式 #但是只会把分组里的显示出来#search #返回一个对象 .group()#match #返回一个对象 .group() ...
- python开发模块基础:异常处理&hashlib&logging&configparser
一,异常处理 # 异常处理代码 try: f = open('file', 'w') except ValueError: print('请输入一个数字') except Exception as e ...
- python开发模块基础:os&sys
一,os模块 os模块是与操作系统交互的一个接口 #!/usr/bin/env python #_*_coding:utf-8_*_ ''' os.walk() 显示目录下所有文件和子目录以元祖的形式 ...
- python开发模块基础:序列化模块json,pickle,shelve
一,为什么要序列化 # 将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化'''比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给?现在我们能想到的方法就是存在文 ...
- python开发模块基础:time&random
一,time模块 和时间有关系的我们就要用到时间模块.在使用模块之前,应该首先导入这个模块 常用方法1.(线程)推迟指定的时间运行.单位为秒. time.sleep(1) #括号内为整数 2.获取当前 ...
- python开发模块基础:collections模块¶miko模块
一,collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdic ...
- python开发模块基础:正则表达式
一,正则表达式 1.字符组:[0-9][a-z][A-Z] 在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示字符分为很多类,比如数字.字母.标点等等.假如你现在要求一个位置&q ...
- Python开发——目录
Python基础 Python开发——解释器安装 Python开发——基础 Python开发——变量 Python开发——[选择]语句 Python开发——[循环]语句 Python开发——数据类型[ ...
- Python数据可视化---pygal模块
目录 pygal模块 安装pygal模块 pygal模块介绍 柱状图 单列柱状图 堆叠柱状图 横向柱状图 折线图 简单折线图 纵向折线图 堆叠折线图 饼状图 简单饼状图 多级饼状图 圆环图 半圆图 雷 ...
随机推荐
- dom元素改变监听
function domChange(domId, callback) { // select the target node var target = document.getElementById ...
- Spring定时器Quartz的用法
首先导入需要的两个jar: spring-context-support-4.1.1.RELEASE.jar quartz-2.2.1.jar 1.创建两个类: 2. QuartzConfigurat ...
- iOS10.0 & Swift 3.0 对于升级项目的建议
iOS & Swift新旧版本更替, 在Apple WWDC大会开始之际, 也迎来了iOS 10.0, Swift 3.0 测试版, 到目前为止, 已经是测试版2.0, 每次更新都带来了新的语 ...
- 小技巧处理div内容溢出
前几天遇到一个问题,代码是这样一个层次: <div class="province"> <ul> <li>1</li& ...
- Java 9的日期时间格式化趋近Unicode区域设置标准
1.JDK-8148947,DataTimeFormatter的模式字母“g”:正如在LDML中定义的,字母“g”指代一个“简化儒略日期”,简化儒略日期与正常儒略日期的差别在于:(1)简化儒略 ...
- [ExtJs] ExtJs4.2 数据模型Ext.data.Model学习
Model代表应用程序管理的一些对象.例如,我们可能会为 我们想在系统中建模的现实世界中的一些物体像使用者.产品和汽车等定义一个Model.这些Model在 Ext.ModelManager中注册,被 ...
- Socket无连接简单实例
使用无连接的套接字,我们能够在自我包含的数据包里发送消息,采用独立的读函数读取消息,读取的消息是使用独立的发送函数发送的.但是UDP数据包不能保证可靠传输,存在许多的因素,比如网络繁忙等等,都有可能阻 ...
- java编写的2048程序
import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util ...
- windows下配置VisualSVN Server服务器
下载安装文件: 服务端安装文件:VisualSVN-Server-1.6.2 客户端安装文件:TortoiseSVN-1.5.5.14361-win32-svn-1.5.4 上面是我使用的版本. 在V ...
- React如何进行事件传参
今天在学习React的es6语法的时候,发现了个有趣的现象,就是this的指向问题.es6的this不同于es5,它在创立函数伊始便已经存在了,而不是像es5一样,睡调用的函数,this指向谁.但是这 ...