# 当前版本 ： python3.8.2
# 开发时间 ： 2021/8/28 14:28
"""
在本节中，我们将使用Python可视化包Pygal来生成可缩放的矢量图形文件。
对于需要在尺寸不同的屏幕上显示的图表，这很有用，因为它们将自动缩放，以适合观看者的屏幕。
如果你打算以在线方式使用图表，请考虑使用Pygal来生成它们，这样它们在任何设备上显示时都会很美观。

在这个项目中，我们将对掷骰子的结果进行分析。掷6面的常规骰子时，可能出现的结果为1~6点，且出现每种结果的可能性相同。
然而，如果同时掷两个骰子，某些点数出现的可能性将比其他点数大。
为确定哪些点数出现的可能性最大，我们将生成一个表示掷骰子结果的数据集，并根据结果绘制出一个图形。

在数学领域，常常利用掷骰子来解释各种数据分析，但它在赌场和其他博弈场景中也得到了实际应用，在游戏《大富翁》以及众多角色扮演游戏中亦如此。
"""
# 4.1安装Pygal
# 4.2Pygal画廊
# 要了解使用Pygal可以创建什么样的图表，请查看图表类型画廊：
# 访问http://www.pygal.org/ ，单击Documentation，再单击Chart types。每个示例都包含源代码，让你知道这些图表是如何生成的。

# 4.3创建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和面数之间的随机数。这个函数可能返回起始值1、终止值num_sides或这两个值之间的任何整数。
"""

#  4.4掷骰子
# 使用这个类来创建图表之前，先来掷D6骰子，将结果打印出来，并检查结果是否合理：
"""
from die import Die

# 创建一个D6
die = Die()

# 掷几次骰子，并将结果存储在一个列表中
results = []
for roll_num in range(100):
    result = die.roll()
    results.append(result)

print(results)
"""
# 4.5分析结果
# 为了分析掷一个D6骰子的结果，我们计算每个点数出现的次数

# 4.6绘制直方图
# 有了频率列表后，我们就可以绘制一个表示结果的直方图。直方图是一种条形图，指出了各种结果出现的频率。创建这种直方图的代码如下：
"""
# 对结果进行可视化
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。 要查看生成的直方图，最简单的方式是使用Web浏览器。
为此，在任何Web浏览器中新建一个标签页，再在其中打开文件die_visual.svg.
"""

# 4.7同时掷两个骰子
"""
同时掷两个骰子时，得到的点数更多，结果分布情况也不同。
下面来修改前面的代码，创建两个D6骰子，以模拟同时掷两个骰子的情况。
每次掷两个骰子时，我们都将两个骰子的点数相加，并将结果存储在results中。
复制die_visual.py并将其保存为dice_visual.py，再做如下修改：
见dice_visual
"""

# 4.8同时掷两个面数不同的骰子
# 下面来创建两个面数不同的骰子
