用Pygal绘制直方图代码示例

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

1、Pygal模块安装

pygal的安装这里暂不介绍,大家可参阅《pip和pygal的安装实例教程》

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:

总结

以上是 用Pygal绘制直方图代码示例 的全部内容, 来源链接: utcz.com/z/313559.html

回到顶部