python -m pip install --user pygal
访问http://www.pygal.org/,单击Documentation,再单击Chart types。每个示例都包含源代码,可知道这些图表是如何生成的。
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。
#创建两个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"