Python数据可视化工具matplotlib的学习笔记(三)-Pygal

(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数据可视化工具matplotlib的学习笔记(三)-Pygal)