可视化包pygal可以生成可缩放的矢量图形文件,对于需要在尺寸不同的屏幕上显示的图表很有用,它将自动缩放,以适合观看者的屏幕。
使用pygal来模拟掷一个骰子的结果
import numpy as np
class Die():
def __init__(self,num_sizes=6):
self.num_sizes=num_sizes
def roll(self):
#返回一个位于1和筛子面数之间的随机值
return np.random.randint(1,self.num_sizes+1)
die=Die()
results=[]
for roll_num in range(100):
result=die.roll()
results.append(result)
frequencies=[]
for value in range(1,die.num_sizes+1):
frequency=results.count(value)
frequencies.append(frequency)
print(frequencies)
绘制直方图
hist=pygal.Bar()
hist.title='results of rolling one D6 1000 times.'
hist.x_labels=[str(x) for x in range(1,die.num_sizes+1)]
hist.x_title='Result'
hist.y_title='frequency of result'
#用add()将值添加到图表中。参数为要给添加值指定的标签,还有一个值的列表。
#将图表渲染为SVG文件,扩展名为.svg
hist.add('D6',frequencies)
hist.render_to_file(r'C:\Users\LPH\Desktop\Die.svg')
完整代码:
import numpy as np
import pygal
class Die():
def __init__(self,num_sizes=6):
self.num_sizes=num_sizes
def roll(self):
#返回一个位于1和筛子面数之间的随机值
return np.random.randint(1,self.num_sizes+1)
die=Die()
results=[]
for roll_num in range(1000):
result=die.roll()
results.append(result)
frequencies=[]
for value in range(1,die.num_sizes+1):
frequency=results.count(value)
frequencies.append(frequency)
print(frequencies)
hist=pygal.Bar()
hist.title='results of rolling one D6 1000 times.'
hist.x_labels=[str(x) for x in range(1,die.num_sizes+1)]
hist.x_title='Result'
hist.y_title='frequency of result'
#用add()将值添加到图表中。参数为要给添加值指定的标签,还有一个值的列表。
#将图表渲染为SVG文件,扩展名为.svg
hist.add('D6',frequencies)
hist.render_to_file(r'C:\Users\LPH\Desktop\Die.svg')
使用pygal来模拟掷两个筛子(面数不同)的结果
import numpy as np
import pygal
class Die():
def __init__(self,num_sizes=6):
self.num_sizes=num_sizes
def roll(self):
#返回一个位于1和筛子面数之间的随机值
return np.random.randint(1,self.num_sizes+1)
die1=Die()
die2=Die(10)
results=[]
for roll_num in range(1000):
result=die1.roll()+die2.roll()
results.append(result)
frequencies=[]
for value in range(2,die1.num_sizes+die2.num_sizes+1):
frequency=results.count(value)
frequencies.append(frequency)
print(frequencies)
hist=pygal.Bar()
hist.title='results of rolling one D6 1000 times.'
hist.x_labels=[str(x) for x in range(2,die1.num_sizes+die2.num_sizes+1)]
hist.x_title='Result'
hist.y_title='frequency of result'
#用add()将值添加到图表中。参数为要给添加值指定的标签,还有一个值的列表。
#将图表渲染为SVG文件,扩展名为.svg
hist.add('D6+D10',frequencies)
hist.render_to_file(r'C:\Users\LPH\Desktop\Die.svg')
结果如图: