Pygal
Pygal我们将使用Python可视化包Pygal来生成可缩放的矢量图形文件。对于需要在尺寸不同的屏幕上显示的图表,这很有用,因为它们将自动缩放,以适合观看者的屏幕。
Pygal官网:
https://www.pygal.org/en/stable/
我们将使用Pygal来分析掷骰子问题。
安装Pygal库:
pip install pygal
创建Die 类
我们用一个类来模拟一个骰子:
from random import randint class Die(): """表示一个骰子的类""" def __init__(self, num_sides=6): """骰子默认为6面""" self.num_sides = num_sides def roll(self): """"返回一个位于1和骰子面数之间的随机值""" return randint(1, self.num_sides)
方法__init__()接受一个可选参数。创建这个类的实例时,如果没有指定任何实参,面数默认为6;如果指定了实参,这个值将用于设置骰子的面数。
骰子是根据面数命名的,6面的骰子名为D6,8面的骰子名为D8,以此类推。
方法roll()使用函数randint()来返回一个1和面数之间的随机数。
绘制直方图:
import pygal # 分析结果 frequencies = [] for value in range(1, die.num_sides+1): frequency = results.count(value) frequencies.append(frequency) # 对结果进行可视化 hist = pygal.Bar() hist.title = "Results of rolling one D6 1000 times." hist.x_labels = ['1', '2', '3', '4', '5', '6'] hist.x_title = "Result" hist.y_title = "Frequency of Result" hist.add('D6', frequencies) hist.render_to_file('die_visual.svg')
为创建条形图,我们创建了一个pygal.Bar()实例,并将其存储在hist中。
我们设置hist的属性title(用于标示直方图的字符串),将掷D6骰子的可能结果用作x轴的标签,并给每个轴都添加了标题。
我们使用add()将一系列值添加到图表中(向它传递要给添加的值指定的标签,还有一个列表,其中包含将出现在图表中的值)。最后,我们将这个图表渲染为一个SVG文件,这种文件的扩展名必须为.svg。
完整代码:
import pygal from random import randint class Die(): """表示一个骰子的类""" def __init__(self, num_sides=6): """骰子默认为6面""" self.num_sides = num_sides def roll(self): """"返回一个位于1和骰子面数之间的随机值""" return randint(1, self.num_sides) die = Die() # 掷几次骰子,并将结果存储在一个列表中 results = [] for roll_num in range(100): result = die.roll() results.append(result) #print(results) for roll_num in range(1000): result = die.roll() results.append(result) frequencies = [] for value in range(1, die.num_sides+1): frequency = results.count(value) frequencies.append(frequency) # 对结果进行可视化 hist = pygal.Bar() hist.title = "Results of rolling one D6 1000 times." hist.x_labels = ['1', '2', '3', '4', '5', '6'] hist.x_title = "Result" hist.y_title = "Frequency of Result" hist.add('D6', frequencies) hist.render_to_file('die_visual.svg')
在运行目录找到运行结果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)