91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在python中繪制cdf

發布時間:2021-03-20 16:39:25 來源:億速云 閱讀:424 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關怎么在python中繪制cdf,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

1、matplotlib.pyplot.hist()

  def hist(self, x, bins=None, range=None, density=None, weights=None,
       cumulative=False, bottom=None, histtype='bar', align='mid',
       orientation='vertical', rwidth=None, log=False,
       color=None, label=None, stacked=False, normed=None,
       **kwargs):

第一種方法,我們使用matplotlib圖形庫中的hist函數,熟悉該庫的人應該知道這是一個直方圖繪制函數,以上是從API中找到的hist函數的所有參數,我們給出一維數組或者列表x,使用hist畫出該數據的直方圖。

直方圖有兩種形式,分別是概率分布直方圖和累積分布直方圖(可能說的不準確- -!),可以通過參數cucumulative來調節,默認為False,畫出的是PDF,那么True畫出的便是CDF直方圖。

PDF(figure1)可以觀察到整個數據在橫軸范圍內的分布,CDF(figure2)則可以看出不同的數據分布間的差異性,也可以觀察到整個數據的增長趨勢和波動情況。

怎么在python中繪制cdf

上圖是概率分布直方圖,縱軸代表概率,如果置參數normed=False,縱軸代表頻數

怎么在python中繪制cdf

如果我們要觀察兩種數據分布的差異,可能使用直方圖就不是很直觀,各種直方柱會相互重疊,我們只需更改直方圖的圖像類型,令histtype=‘step',就會畫出一條曲線來(Figure3,實際上就是將直方柱并在一起,除邊界外顏色透明),類似于累積分布曲線。這時,我們就能很好地觀察到不同數據分布曲線間的差異。

怎么在python中繪制cdf

2、numpy.histogram

def histogram(a, bins=10, range=None, normed=False, weights=None,
     density=None)

第二種方法我們使用numpy中畫直方圖的函數histogram,該函數不是一個直接的繪圖函數(廢話- -!過渡句,哈哈),給定一組數據a,它會返回兩個數組hist和bin_edges,默認情況下hist是數據在各個區間上的頻率,bin_edges是劃分的各個區間的邊界,說到這我們大概可以想到其實該函數算是上一個函數的底層函數,我們可以依據得到的這兩個數組來畫直方圖,我們也可以用頻率數組來直接畫分布曲線(Figure4)

怎么在python中繪制cdf

這里我只給出了一個最原始的圖像,直接用hist數組畫的,如果想要變成合格的累積分布曲線圖,縱軸為概率(頻率乘區間長度),橫軸為區間(從bin_edges數組中取n-1個)就可以了

3、stats.relfreq

def relfreq(a, numbins=10, defaultreallimits=None, weights=None)
Returns
-------
frequency : ndarray
  Binned values of relative frequency.
lowerlimit : float
  Lower real limit
binsize : float
  Width of each bin.
extrapoints : int
  Extra points.

第三種方法我們使用stats中的relfreq函數,該函數和第二種的方法類似,也并非是直接畫圖,而是返回關于直方圖的一些數據,這里的frequency直接是概率而非頻率,可以直接作為CDF圖的縱軸,但是橫軸需要自己計算,計算公式:

res.lowerlimit + np.linspace(0,res.binsize*res.frequency.size, res.frequency.size)

這個公式應該很好理解,我就不多說了,當然這些返回值都要依賴我們所給出的bins的數目。下面我給出一段代碼,便是使用stats.relfreq畫出概率分布直方圖和累積分布曲線圖。

rng = np.random.RandomState(seed=12345)
samples = stats.norm.rvs(size=1000, random_state=rng)
res = stats.relfreq(samples, numbins=25)
x = res.lowerlimit + np.linspace(0, res.binsize*res.frequency.size,res.frequency.size)
fig = plt.figure(figsize=(5, 4))
ax = fig.add_subplot(1, 1, 1)
ax.bar(x, res.frequency, width=res.binsize)
ax.set_title('Relative frequency histogram')
ax.set_xlim([x.min(), x.max()])
plt.show()

怎么在python中繪制cdf

rng = np.random.RandomState(seed=12345)
samples = stats.norm.rvs(size=1000, random_state=rng)
res = stats.relfreq(samples, numbins=25)
x = res.lowerlimit + np.linspace(0, res.binsize*res.frequency.size,res.frequency.size)
y=np.cumsum(res.frequency)
plt.plot(x,y)
plt.title('Figure6 累積分布直方圖')
plt.show()

怎么在python中繪制cdf

看完上述內容,你們對怎么在python中繪制cdf有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天津市| 大理市| 多伦县| 新泰市| 凤庆县| 华安县| 鹤山市| 商城县| 闽清县| 常熟市| 北宁市| 剑河县| 三门峡市| 彩票| 乐东| 梁平县| 诸城市| 时尚| 广昌县| 台北市| 永新县| 汉阴县| 彰武县| 依兰县| 鹿邑县| 永平县| 布拖县| 昌江| 安顺市| 都匀市| 德州市| 塔河县| 通道| 神木县| 石棉县| 常德市| 固镇县| 平山县| 蒙山县| 宝应县| 天全县|