您好,登錄后才能下訂單哦!
使用Python怎么繪制一個頻率分布直方圖?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
1. 區間長度相同繪制直方圖
#-*- encoding=utf-8 -*- import datetime import numpy as np import matplotlib.pyplot as plt import matplotlib zhfont1 = matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\simsun.ttc') # 按照固定區間長度繪制頻率分布直方圖 # bins_interval 區間的長度 # margin 設定的左邊和右邊空留的大小 def probability_distribution(data, bins_interval=1, margin=1): bins = range(min(data), max(data) + bins_interval - 1, bins_interval) print(len(bins)) for i in range(0, len(bins)): print(bins[i]) plt.xlim(min(data) - margin, max(data) + margin) plt.title("probability-distribution") plt.xlabel('Interval') plt.ylabel('Probability') plt.hist(x=data, bins=bins, histtype='bar', color=['r']) plt.show()
2. 區間長度不同繪制直方圖
#-*- encoding=utf-8 -*- import datetime import numpy as np import matplotlib.pyplot as plt import matplotlib zhfont1 = matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\simsun.ttc' # 自己給定區間,小于區間左端點和大于區間右端點的統一做處理,對于數據分布不均很的情況處理較友好 # bins 自己設定的區間數值列表 # margin 設定的左邊和右邊空留的大小 # label 右上方顯示的圖例文字 """e import numpy as np data = np.random.normal(0, 1, 1000) bins = np.arange(-5, 5, 0.1) probability_distribution_extend(data=data, bins=bins) """ def probability_distribution_extend(data, bins, margin=1, label='Distribution'): bins = sorted(bins) length = len(bins) intervals = np.zeros(length+1) for value in data: i = 0 while i < length and value >= bins[i]: i += 1 intervals[i] += 1 intervals = intervals / float(len(data)) plt.xlim(min(bins) - margin, max(bins) + margin) bins.insert(0, -999) plt.title("probability-distribution") plt.xlabel('Interval') plt.ylabel('Probability') plt.bar(bins, intervals, color=['r'], label=label) plt.legend() plt.show()
Case示例
if __name__ == '__main__': data = [1,4,6,7,8,9,11,11,12,12,13,13,16,17,18,22,25] probability_distribution(data=data, bins_interval=5,margin=0)
效果如下圖
關于使用Python怎么繪制一個頻率分布直方圖問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。