您好,登錄后才能下訂單哦!
使用Python可視化Pygal包來生成可縮放的矢量圖形文件!
對于在尺寸不同的屏幕上顯示圖標,它們將自動縮放以適合觀看者的屏幕,如果以在線的方式使用圖標,建議使用Pygal來生成,這樣在任何設備上顯示都會很美觀!!!
1、安裝Pygal
安裝Pygal有好幾種辦法這邊簡略帶過!!!
介紹一種在pycharm中直接安裝的方法!
1、在File文件中打開Settings
2、找到Project:untitled打開Projiect lnterpreter右上方的+號
3、輸入我們要安裝的Pygal包,選中Specify version,點擊左下方Install Package,出現綠色顯示安裝完成
4、查詢下是否安裝完成,在pycharm下方找到Terminal,并輸入pip list,這時候我們查看到Pygal安裝完成2.4.0版本。
2、Pypal畫廊
了解使用Pygal可創建什么樣的圖標,可訪問官網http://www.pygal.org/單擊Documentation,再單擊Chart types
3、創建Die類
下面的類模擬擲一個骰子:
創建die.py文件
from random import randint class Die(): """表示一個骰子的類""" def __init__(self, num_sides=6): #_init_()接受一個可選參數,如果沒有指定任何實參,面數默認為6 """骰子默認為六面""" self.num_sides = num_sides def roll(self): #方法roll()使用randint()來返回 """返回一個位于1和骰子面熟之間的隨機值""" return randint(1,self.num_sides)
4、擲骰子
使用Die類來擲骰子,將結果打印
新建一個die_visual.py文件
from matp.touzi.die import Die #創建一個Die實例 die=Die() #擲幾次骰子,并將結果存儲在一個列表中 results=[] for roll_num in range(100): result=die.roll() results.append(result) print(results)
通過對列表的打印,我們可以的下列結果集:
在效果圖中我們可以看出,并未出現0和7的值所有結果有效
5、分析結果
在上述代碼中,我們得到了骰子所有可能的列表,現在我們需要分析每個點出現的次數:
在die_visual.py文件添加修改:
from matp.touzi.die import Die #創建一個Die實例 die=Die() #擲幾次骰子,并將結果存儲在一個列表中 results=[] for roll_num in range(1000): result=die.roll() results.append(result) #分析結果 frequencies=[] for value in range(1,die.num_sides+1): frequency=results.count(value) frequencies.append(frequency) print(frequencies) #print(results)
這邊我們將擲骰子的次數增加到1000,同時創建了空列表frequencies,用來存儲每個點出現的次數,再把值附加到frequencies末尾,我們將其效果打印,如下圖所示:
6、繪制直方圖
有了每個點數的次數列表之后,我們就可以繪制一個表示結果的直方圖
在die_visual.py文件添加:
#對結果進行可視化 hist=pygal.Bar() #創建一個實例,并將其儲存在hist中 hist.title="Result of rolling one D6 1000 times." #hist標題 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') #將圖標渲染為一個svg文件
找到文件的地址,用瀏覽器打開die_visual.svg文件效果圖如下所示:
7、同時擲兩個骰子
前6點都是擲1個骰子,現在我們試著嘗試同時擲兩個骰子
我們只需對上面的die_visual.py文件進行修改即可,這邊我們把die_visual.py文件復制一遍取一個新的文件名dice_visual.py,在dice_visual.py文件中進行修改。
from matp.touzi.die import Die import pygal #創建兩個D6骰子 die_1=Die() die_2=Die() #擲幾次骰子,并將結果存儲在一個列表中 results=[] for roll_num in range(1000): result=die_1.roll()+die_2.roll() results.append(result) #分析結果 frequencies=[] max_result=die_1.num_sides+die_2.num_sides for value in range(1,max_result+1): frequency=results.count(value) frequencies.append(frequency) #對結果進行可視化 hist=pygal.Bar() #創建一個實例,并將其儲存在hist中 hist.title="Result of rolling two D6 1000 times." #hist標題 hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12'] hist.x_title="Result" hist.y_title="Frequency of Result" hist.add('D6+D6',frequencies) #將一系列值添加到圖標中 hist.render_to_file('dice_visual.svg') #將圖標渲染為一個svg文件 #print(frequencies) #print(results)
max_result=die_1.num_sides+die_2.num_sides
兩個點數相加最大之和12,存儲在max_result當中
效果圖如下:
8、同時擲兩個面數不同的骰子
上述第7點中擲的是兩個相同的D6骰子,現實我們嘗試著操作兩個不同面得的骰子,擲這兩個骰子50000次的結果如何。
新建different_dice.py文件
**from matp.touzi.die import Die import pygal #創建一個D6骰子和D10骰子 die_1=Die() die_2=Die(10) #傳遞了第二個骰子實參為10 #擲幾次骰子,并將結果存儲在一個列表中 results=[] for roll_num in range(50000): result=die_1.roll()+die_2.roll() results.append(result) #分析結果 frequencies=[] max_result=die_1.num_sides+die_2.num_sides for value in range(1,max_result+1): frequency=results.count(value) frequencies.append(frequency) #對結果進行可視化 hist=pygal.Bar() #創建一個實例,并將其儲存在hist中 hist.title="Result of rolling a D6 and a D10 50000 times." #hist標題 hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12','13','14','15','16'] hist.x_title="Result" hist.y_title="Frequency of Result" hist.add('D6+D10',frequencies) #將一系列值添加到圖標中 hist.render_to_file('different_dice.svg') #將圖標渲染為一個svg文件 #print(frequencies) #print(results)**
效果圖如下:
綜上模擬擲骰子完畢!!!
附上完整的die.py和die_visual.py和dice_visual.py和different_dice.py文件
die.py
from random import randint class Die(): """表示一個骰子的類""" def __init__(self, num_sides=6): #_init_()接受一個可選參數,如果沒有指定任何實參,面數默認為6 """骰子默認為六面""" self.num_sides = num_sides def roll(self): #方法roll()使用randint()來返回 """返回一個位于1和骰子面熟之間的隨機值""" return randint(1,self.num_sides)
die_visual.py
from matp.touzi.die import Die import pygal #創建一個Die實例 die=Die() #擲幾次骰子,并將結果存儲在一個列表中 results=[] for roll_num in range(1000): result=die.roll() results.append(result) #分析結果 frequencies=[] for value in range(1,die.num_sides+1): frequency=results.count(value) frequencies.append(frequency) #對結果進行可視化 hist=pygal.Bar() #創建一個實例,并將其儲存在hist中 hist.title="Result of rolling one D6 1000 times." #hist標題 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') #將圖標渲染為一個svg文件 #print(frequencies) #print(results)
dice_visual.py
from matp.touzi.die import Die import pygal #創建兩個D6骰子 die_1=Die() die_2=Die() #擲幾次骰子,并將結果存儲在一個列表中 results=[] for roll_num in range(1000): result=die_1.roll()+die_2.roll() results.append(result) #分析結果 frequencies=[] max_result=die_1.num_sides+die_2.num_sides for value in range(1,max_result+1): frequency=results.count(value) frequencies.append(frequency) #對結果進行可視化 hist=pygal.Bar() #創建一個實例,并將其儲存在hist中 hist.title="Result of rolling two D6 1000 times." #hist標題 hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12'] hist.x_title="Result" hist.y_title="Frequency of Result" hist.add('D6+D6',frequencies) #將一系列值添加到圖標中 hist.render_to_file('dice_visual.svg') #將圖標渲染為一個svg文件 #print(frequencies) #print(results)
different_dice.py
from matp.touzi.die import Die import pygal #創建一個D6骰子和D10骰子 die_1=Die() die_2=Die(10) #擲幾次骰子,并將結果存儲在一個列表中 results=[] for roll_num in range(50000): result=die_1.roll()+die_2.roll() results.append(result) #分析結果 frequencies=[] max_result=die_1.num_sides+die_2.num_sides for value in range(1,max_result+1): frequency=results.count(value) frequencies.append(frequency) #對結果進行可視化 hist=pygal.Bar() #創建一個實例,并將其儲存在hist中 hist.title="Result of rolling a D6 and a D10 50000 times." #hist標題 hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12','13','14','15','16'] hist.x_title="Result" hist.y_title="Frequency of Result" hist.add('D6+D10',frequencies) #將一系列值添加到圖標中 hist.render_to_file('different_dice.svg') #將圖標渲染為一個svg文件 #print(frequencies) #print(results)
總結
到此這篇關于Pycharm中安裝Pygal并使用Pygal模擬擲骰子的文章就介紹到這了,更多相關Pycharm安裝Pygal模擬擲骰子內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。