python 為直方圖繪制擬合曲線


    def normfun(self, x, mu, sigma):
        """
        正態分布的概率密度函數
        :param x: 數據集中的某一具體測量值
        :param mu: 數據集的平均值,反映測量值分布的集中趨勢
        :param sigma: 數據集的標准差,反映測量值分布的分散程度
        :return:
        """
        pdf = np.exp(-((x - mu) ** 2) / (2 * sigma ** 2)) / (sigma * np.sqrt(2 * np.pi))
        return pdf
    def draw(self, name, data):
        mean = np.mean(data)  # 計算均值
        std = np.std(data)  # 計算方差
        data1 = [(x-mean)/std for x in data]  # z-score標准化方法(數據標准化)
        num_bins = 100  # 直方圖柱子的數量
        plt.figure(figsize=(20, 8))
                            # data數據  num_bins柱子個數 range取值范圍[-3.3] rwidth柱子寬度
        n, bins, patches = plt.hist(data1, num_bins, range=[-5, 5], rwidth=0.8, density=0.9, facecolor='blue', alpha=0.5)
        # 直方圖函數,x為x軸的值,density=1表示為概率密度,即和為一,綠色方塊,色深參數0.5.返回n個概率,直方塊左邊線的x值,及各個方塊對象
        # print(bins)
        y = self.normfun(bins, np.mean(data1), np.std(data1))  # 擬合一條最佳正態分布曲線(方程)y  代替品 ——>>> from scipy.stats import norm  y = norm.pdf(bins, mu, sigma)
        plt.plot(bins, y, 'r--')  # 繪制y的曲線
        plt.xlabel('sepal-length')  # 繪制x軸
        plt.ylabel('Probability')  # 繪制y軸
        plt.title(r'{}  $\mu={}$,$\sigma={}$'.format(name, mean, std))  # 標題
        plt.subplots_adjust(left=0.15)  # 左邊距

        out_file = 'out_pic/%s.png' % name
        plt.savefig(out_file, transparent=True, bbox_inches='tight', dpi=200, pad_inches=0.0, set_visiable=False,
                    format='png')
        print('畫圖完成 %s' % out_file)
        # plt.show()

 

 

屬性 說明 類型
x 數據 數值類型
bins 條形數 int
color 顏色 "r","g","y","c"
density 是否以密度的形式顯示 bool
range x軸的范圍 數值元組(起,終)
bottom y軸的起始位置 數值類型
histtype 線條的類型 "bar":方形,"barstacked":柱形,
"step":"未填充線條"
"stepfilled":"填充線條"
align 對齊方式 "left":左,"mid":中間,"right":右
orientation orientation "horizontal":水平,"vertical":垂直
log 單位是否以科學計術法 bool

          



參考:計算標准化   https://www.cnblogs.com/yahengwang/p/10634010.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM