用pygal模拟投骰子并生成柱状图
die.py
# 用pygal模拟骰子
from random import randint
class Die:
def __init__(self, num_sides = 6):
self.num_sides = num_sides
def roll(self):
return randint(1, self.num_sides)
dice_visual.py
from die import Die
import pygal
die = Die()
results = []
# 投骰子的次数
for roll_num in range(1000):
result = die.roll()
results.append(result)
print(results)
frequencies = []
for value in range(1, die.num_sides + 1):
# 记录每个点数出现的次数
frequency = results.count(value)
frequencies.append(frequency)
print(frequencies)
# 对结果进行可视化
hist = pygal.Bar() # 柱状图
hist.title = "Results of rolling a 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") # 生成一个名为 die_visual的矢量图
用火狐浏览器打开svg格式的矢量图,还会有交互效果,由于是矢量图,尺寸放大了也不会模糊 。
学习了pyplot和pygal后发现,pyplot的label是pygal中的title,使用起来也不一样,pyplot是xlabel(...) pygal是x_title = ...真烦