(2020.03.25)
Pygal : 生成可缩放的矢量图形文件
- 安装方法:
python -m pip install --user pygal
- 图表类型画廊
访问http://www.pygal.org/,单击Documentation,再单击Chart types。每个示例都包含源代码,可知道这些图表是如何生成的。
- 创建Die类 :
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)
方法roll() 使用函数randint() 来返回一个1和面数之间的随机数。
- 掷骰子
from die import Die
#创建一个D6
die = Die()
#掷几次骰子,并将结果存储在一个列表中
results = []
for roll_num in range(100):
result = die.roll()
results.append(result)
print(results)
使用“ for roll_num in range(100):“ 做到掷100次骰子。
- 分析结果 :
方法 : 计算每个点数出现的次数
#分析结果
frequencies = []
for value in range(1,die.num_sides+1):
frequency = results.count(value)
frequencies.append(frequency)
print(frequencies)
首先创建一个空列表,用于存储每种点数出现的次数;
然后使用一个循环遍历可能的点数,计算每种点数在results中出现的次数。
- 绘制直方图
直方图是一种条形图,指出了各种结果出现的频率。
#对结果进行可视化
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')
(1)、为了创建条形图,先创建一个pygal.Bar()实例,并将其存储在hist中。
(2)、设置hist的属性title(直方图的标题)。
(3)、将掷骰子的可能结果用作x轴的标签.
(4)、设置x和y轴的标题。
(5)、使用add()将一系列值添加到图表中(传递要给添加的值指定的标签,和一个列表,其中包含将出现在图表中的值)。
(6)、将这个图表渲染为一个SVG文件,这种文件的扩展名必须为.svg。
- 同时掷两个骰子
(1)、创建两个D6骰子。
#创建两个D6骰子
die_1 = Die()
die_2 = Die()
(2)、计算每次两个骰子的总点数。
#掷骰子多次,并将结果存储在一个列表中
results = []
for roll_num in range(1000):
result = die_1.roll() + die_2.roll()
results.append(result)
(3)、分析结果,所有可能得到的值在区间【2—12】内。
#分析结果
frequencies = []
max_result = die_1.num_sides + die_2.num_sides
for value in range(2,max_result+1):
frequency = results.count(value)
frequencies.append(frequency)
(4)、可视化结果
修改标题、x轴标签、数据系列
#对结果进行可视化
hist = pygal.Bar()
hist.title = "Results of rolling two D6 dice 1000 times."
hist.x_labels = ['2','3','4','5','6','7','8','9','10','11','12']
hist.x_title = "Result"
hist.y_title = "Frequency of Result"
- 同时掷两个面数不同的骰子
步骤与同时掷两个相同的骰子相似
本文介绍了Python数据可视化库Pygal的使用,包括如何安装Pygal,通过实例展示了如何创建直方图来分析掷骰子的结果,以及如何进行更复杂的可视化,如同时掷两个骰子的点数分布。此外,还讲解了如何修改图表的标题、x轴标签和数据系列。
2168

被折叠的 条评论
为什么被折叠?



