python學習筆記:頻數分布圖與3D柱狀圖

2021-01-07 ACGN漫步者

擲骰子,定義類from random import randint#定義die類class Die():#設置骰子的面數為6 def __init__(self,num_sides=6): self.num_sides=num_sides#方法 roll() 使用函數 randint() 來返回一個 1 和面數之間的隨機數 def roll(self): return randint(1,self.num_sides)

2.同時擲兩個骰子,生成並保存頻數分布圖

import pygal#從之前代碼中導入創建的類from die import Die# 創建兩個 D6 骰子die_1=Die()die_2=Die()# 擲骰子多次,並將結果存儲到列表results中results=[]#循環1000次,收集擲骰子的數值結果for roll_num in range(1000):result=die_1.roll()+die_2.roll() results.append(result)#生成列表frequencies,計算不同數值情況下骰子的頻次frequencies=[]max_result=die_1.num_sides+die_2.num_sides#計算 2 到 max_result 的各種點數出現的次數#原本可以使用 range(2, 13),但這隻適用於兩個 D6 骰子。# 模擬現實世界的情形時,最好編寫可輕鬆地模擬各種情形的代碼。for value in range(2,max_result+1): frequency=results.count(value) frequencies.append(frequency)#生成條形圖,讓數據可視化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"hist.add('D6+D6', frequencies)#保存hist.render_to_file('dice_visual.svg')

figure1

3.擲兩個面數不同的骰子

這裡只需要將2中的代碼進行簡單修改即可。

# 創建兩個 D6 骰子die_1=Die()die_2=Die()

修改為:

# 創建一個 D6 和一個 D10die_1=Die()die_2=Die(10)

另外這裡收集數據的次數增加,所以

#循環1000次,收集擲骰子的數值結果for roll_num in range(1000):result=die_1.roll()+die_2.roll() results.append(result)

修改為:

for roll_num in range(5000):result=die_1.roll()+die_2.roll() results.append(result)

其他內容保持不變,得到下圖:

figure2

4.繪製3D柱狀圖

#導入繪製3D柱狀圖所需要的包import matplotlib.pyplot as pltimport numpy as npimport matplotlib as mplimport randomfrom mpl_toolkits.mplot3d import Axes3D#設置字體大小mpl.rcParams['font.size'] = 10#生成圖紙,繪製3D柱狀圖子圖fig = plt.figure()ax = fig.add_subplot(111, projection='3d')#設置輔助參數,x = np.random.normal(平均數,標準差,生成數值的個數)samples = 25x = np.random.normal(5, 1, samples) # x上正態分布y = np.random.normal(3, .5, samples) # y上正態分布# xy平面上,按照10*10的網格劃分,落在網格內個數hist,x劃分邊界、y劃分邊界hist, xedges, yedges = np.histogram2d(x, y, bins=10)elements = (len(xedges) - 1) * (len(yedges) - 1)#設置作圖點的坐標,meshgrid函數用兩個坐標軸上的點在平面上畫格xpos, ypos = np.meshgrid(xedges[:-1] + .25, yedges[:-1] + .25)# 多維數組變為一維數組xpos = xpos.flatten()ypos = ypos.flatten()zpos = np.zeros(elements)#變量dx,dy表示每一個矩形條底部的寬度,這裡設置xy平面的每一個位置給定的值為0.1個點的寬度dx = .1 * np.ones_like(zpos) # zpos一致的全1數組dy = dx.copy()#定義了柱狀圖的高度dz = hist.flatten()# 每個立體以(xpos,ypos,zpos)為左下角,以(xpos+dx,ypos+dy,zpos+dz)為右上角ax.bar3d(xpos, ypos, zpos, dx, dy, dz, color='b', alpha=0.4)plt.show()

figure3

5.3D柱狀圖與散點圖

在上述代碼基礎上增加

#給3D柱狀圖的x,y,z軸添加標籤名

ax.set_xlabel('X Axis')ax.set_ylabel('Y Axis')ax.set_zlabel('Z Axis')

#增加包括x,y軸坐標的散點圖子圖ax2=fig.add_subplot(212)ax2.scatter(x,y)ax2.set_xlabel('X Axis')ax2.set_ylabel('Y Axis')

因為要繪畫兩個子圖,所以要對上面的代碼進行一定的修改:

ax = fig.add_subplot(111, projection='3d')

修改為:ax = fig.add_subplot(211, projection='3d')

相關焦點

  • python學習筆記:快速繪圖和3D柱狀圖
    figure23.3D柱狀圖#導入繪圖所需要的包import randomimport numpy as npimport matplotlib as mplimport matplotlib.pyplot
  • 怎麼使用SPSS製作頻數表和頻數分布圖?
    在上面的分享中,我們主要介紹了頻數表和頻數分布圖,我們知道頻數表和圖都可以用excel來做,但是在數據比較龐大時,如果還用excel就比較麻煩、費時,所以我們可以用SPSS來製作就比較簡單啦!讓我們一起來學習一下吧,我們的小編已經很貼心的截圖咯!
  • python學習筆記:同時畫多圖,折線圖,箱線圖,條形圖,柱狀圖等
    #使用subplot創建多個子圖,下面的subplot(2,3,1)表示創建一個包含2行3列圖表的圖紙,1表示第一張圖subplot(2,3,1)plot(x,y)#折線圖subplot(2,3,2)#縱向條形圖bar(x,y)subplot(2,3,3)#水平條形圖(h可以看做是horizontal的縮寫)barh(x,y)#畫一個(x,y)和(x,y1)兩個條形圖疊加在一起的圖,以(x,y)的柱狀圖為底
  • MedCalc16: 4.3.1分布圖: 直方圖
    4.3 分布圖MedCalc的分布圖包括直方圖(histogram)、累積頻率分布圖(cumulative frequency distribution
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    (6套課程) 注:零基礎全能篇中,針對windows和liunx系統均有兩套課程可供選擇學習,單純學python,哪個系統都一樣,初學者只需選擇自己熟悉的系統學習相應課程即可。基於liunx系統的python教程,課程裡也有liunx操作的詳細教學,不用擔心學習時不會操作liunx系統。
  • Python學習筆記:繪畫柱狀圖、誤差條形圖和餅狀圖
    1.柱狀圖#NumPy提供了許多高級的數值編程工具,如:矩陣數據類型、矢量處理,以及精密的運算庫。專為進行嚴格的數字處理而產生。#np、plt,均為簡化用法,方便下面的調用import numpy as npimport matplotlib.pyplot as plt#設置正態分布中的平均值和標準差mu=100sigma=15#隨機生成10000個正態分布公式的數值x=np.random.normal(mu,sigma,10000)#獲得當前的Axes對象axax=plt.gca()#繪製柱狀圖,顏色是黑色,bins表示柱狀圖的固定間隔
  • 「python學習手冊-筆記」003.數值類型
    003.數值類型本系列文章是我個人學習《python學習手冊(第五版)》的學習筆記,其中大部分內容為該書的總結和個人理解,小部分內容為相關知識點的擴展。非商業用途轉載請註明作者和出處;商業用途請聯繫本人(gaoyang1019@hotmail.com)獲取許可。
  • 學習筆記,從NumPy到Scrapy,學習Python不能錯過這些庫
    在網絡上看到幾位前輩寫了關於python深度學習庫的文章,對於小小白來說,因為我剛開始學python,我得承認自己看完後依然覺得雲裡霧裡的,不知道這些庫到底對我有什麼用處。所以我到網絡上搜集補充關於這些庫的說明內容,感覺在這個整理資料的過程中,對於這些python程序庫了解了更多,以下是我整理的學習筆記。
  • Python學習第89課-數據可視化之直方圖繪製
    【每天幾分鐘,從零入門python編程的世界!】假設你想投資某一個城市的房地產,你肯定需要對這個城市的人口分布、增長潛力做一個調查,這時我們就需要做一個直方圖(histogram plot)。bin的說明:bin在英式英語中意思是「垃圾桶」,當我們的數據非常多的時候,每一個數據都對應一個id,比如這個例子中,每一個年齡數據都對應一個人,如果每一個數據id都畫一個柱狀圖,那顯然畫出來非常多,不利於展示和分析。
  • 180項數據,頻數分布直方圖告訴你哪些是合理的68.3%
    工作後發現,原來學業中的圖表在職場中也有著重要的應用,現在的我們祛除了年少時的青澀,平添了些許的無奈,不過還好,學習還不晚。第一部分:頻數分布直方圖是什麼?簡單的說用來表示頻數分布的基本統計圖形,就叫做頻數分布直方圖,也可簡稱直方圖。
  • Origin繪圖:採用高斯方程對碳量子點TEM粒徑分布柱狀圖的擬合
    圖5 柱狀圖的擬合結果(1)柱狀圖間隙的調節圖5 的柱狀圖中,柱子之間的間隙可以調節。這裡,以零間隙調節為例。雙擊柱狀圖,打開Plot Detals設置對話框(圖6),點擊「Spacing」選項卡,修改GapBetween Bars(in %)為0,即可得到緊鄰的柱狀圖,如圖7所示。
  • Python學習第90課-數據可視化之散點圖繪製
    【每天幾分鐘,從零入門python編程的世界!】今天我們學習散點圖,在統計學或者機器學習方面,或者在金融風險控制方面,金融風險控制經常要看異常交易、信貸風險,做這樣的分析就要用到一個圖--散點圖(scatter plot)。
  • Python可視化很簡單,一文學會繪製柱狀圖、條形圖和直方圖
    matplotlib庫作為Python數據化可視化的最經典和最常用庫,掌握了它就相當於學會了Python的數據化可視化,通過前幾次呢,咱們已經討論了使用matplotlib庫中的圖表組成元素的幾個重要函數,相信大家已經學會並掌握了哦,今天呢,咱們再深入一點哦,一起來聊聊關於如何繪製柱狀圖
  • 資源|用Python和NumPy學習《深度學習》中的線性代數基礎
    本文系巴黎高等師範學院在讀博士 Hadrien Jean 的一篇基礎學習博客,其目的是幫助初學者/高級初學者基於深度學習和機器學習來掌握線性代數的概念。掌握這些技能可以提高你理解和應用各種數據科學算法的能力。
  • Python自動化辦公之Word,全網最全看這一篇就夠了
    很多人學習python,不知道從何學起。 很多人學習python,掌握了基本語法過後,不知道在哪裡尋找案例上手。 很多已經做案例的人,卻不知道如何去學習更加高深的知識。
  • python 卡方專題及常見問題 - CSDN
    其根本思想就是在於比較理論頻數和實際頻數的吻合程度或擬合優度問題。(更多參考:卡方檢驗、卡方分布) 不講過多理論,主要使用 python 實現卡方驗證。之前對於元素/特徵/屬性 異常值的選擇情況,可以使用直方圖、箱型圖、Z分數法等篩選。
  • Python 繪圖,我只用 Matplotlib
    圖4-1 直方圖直方圖與柱狀圖的區別有以下幾點:1. 柱狀圖是用條形的長度表示各類別頻數的多少,其寬度(表示類別)是固定的,主要是展示不同類別的數據。2. 直方圖是用面積表示各組頻數的多少,矩形的高度表示每一組的頻數 ( 或頻率 ),寬度則表示各組的組距,因此其高度與寬度均有意義。3.
  • python卡方分析專題及常見問題 - CSDN
    其根本思想就是在於比較理論頻數和實際頻數的吻合程度或擬合優度問題。(更多參考:卡方檢驗、卡方分布) 不講過多理論,主要使用 python 實現卡方驗證。之前對於元素/特徵/屬性 異常值的選擇情況,可以使用直方圖、箱型圖、Z分數法等篩選。
  • 頻數分布表和頻數分布直方圖
    頻數分布表和頻數分布直方圖 來源:中考網整合    作者:中考網編輯    2014-03-11 11:25:58 [標籤:北師大版 八年級數學 電子教材 頻數]說兩句    歡迎使用手機、平板等行動裝置訪問中考網,2019中考一路陪伴同行!