python -m pip install -
-user pygal
安裝好之後可以輸入下列命令列,出現下圖就是安裝正確。
是乙個6面骰子和10面骰子,投擲5000次的直方圖。
from random import randint
import pygal
class
die():
'''表示乙個骰子的類'''
def__init__
(self, num_sides=6)
: self.num_sides = num_sides
defroll
(self)
:'''返回乙個位於1和骰子面數之間的數'''
return randint(
1, self.num_sides)
die1 =die(6)
die2 = die(num_sides=10)
#擲幾次骰子,並儲存至列表中
results =
for roll_num in
range
(5000):
result = die1.roll(
)+ die2.roll(
)print
(len
(results)
)#分析結果
frequencies =
max_result = die1.num_sides + die2.num_sides
for values in
range(2
, max_result+1)
: frequency = results.count(values)
print
(frequencies)
hist = pygal.bar(
)hist.title =
'results of rolling one d6 1000times'
hist.x_labels =
range(2
, max_result+1)
hist.y_labels =
range(0
,5001
,500
)hist.y_title =
'frequency of result'
hist.x_title =
'frequency if result'
hist.add(
'd6+d10'
, frequencies)
hist.render_to_file(
'die_visual.svg'
)
這是資料直方圖
'''將擲骰子的結果儲存在列表中'''
for roll_num in
range
(1000000):
result = die.roll(
(len
(results)
)frequencies =
'''將點數出現的頻率儲存在列表中'''
for frequency in
range(1
, die.num_points+1)
: value = results.count(frequency)
(frequencies)
x_values =
list
(x for x in
range(1
, die.num_points+1)
)y_values = frequencies
plt.plot(x_values, y_values, linewidth=5)
plt.title(
'd6'
)plt.xlabel(
'x', fontsize=14)
plt.ylabel(
'y', fontsize=14)
plt.show(
)
from random import choice
import pygal
class randomwalk():
def __init__(self, num_points=5000):
self.num_points = num_points
'''使起點為0'''
self.x_values = [0]
self.y_values = [0]
def fill_walk(self):
while len(self.x_values) < self.num_points:
'''控制方向和距離'''
x_directions = choice([1, -1])
x_distance = choice(list(i for i in range(0, 7)))
x_step = x_directions * x_distance
y_directions = choice([1, -1])
y_distance = choice(list(j for j in range(0, 7)))
y_step = y_directions * y_distance
'''禁止原地踏步'''
if x_step == 0 and y_step == 0:
continue
'''計算下一步的位置'''
next_x = self.x_values[-1] + x_step
next_y = self.y_values[-1] + y_step
rw = randomwalk()
rw.fill_walk()
hist = pygal.xy(stroke=false)
hist.title = 'random walk'
hist.add('d6', [(rw.x_values[i], rw.y_values[i]) for i in range(0, rw.num_points)])
hist.render_to_file('d6_die.svg')
使用Pygal模擬擲骰子
將使用python視覺化包pygal來生成可縮放的向量圖形檔案。對於需要在尺寸 不同的螢幕上顯示的圖表,這很有用,因為它們將自動縮放,以適合 者的螢幕。使用pygal來建立直方圖 from random import randint class die 表示乙個骰子的類 def init self,...
學習記錄 使用Pygal 模擬擲骰子
建立乙個骰子類 die from random import randint class die def init self,num sides 6 一共六面 self.num sides num sides defroll self 返回1 6 中的隨機一位數字 return randint 1,...
資料視覺化 使用pygal模擬擲骰子
die類模擬擲骰子 同時擲兩個面數不同的骰子,乙個六面,乙個10面,統計兩點數之和的個數繪圖統計 同時擲兩個面數不同的骰子 import pygal 建立乙個d6和乙個d10 die 1 die die 2 die 10 擲骰子多次,並將結果儲存在乙個列表中 results for roll num...