簡體   English   中英

如何重新縮放 matplotlib 直方圖中的計數

[英]How to re-scale the counts in a matplotlib histogram

我有一個運行良好的 matplotlib 直方圖。

hist_bin_width = 4
on_hist = plt.hist(my_data,bins=range(-100, 200,hist_bin_width),alpha=.3,color='#6e9bd1',label='on')

我想要做的就是按因子重新縮放,例如 2。我不想更改 bin 寬度,或更改 y 軸標簽。 我想獲取所有 bin 中的計數(例如 bin 1 有 17 個計數)並乘以 2,這樣 bin 1 現在有 34 個計數。

這可能嗎?

謝謝你。

因為這只是 y 軸的簡單重新縮放,所以這一定是可能的。 之所以出現問題,是因為 Matplotlib 的hist計算繪制直方圖,因此難以干預。 但是,正如文檔中還指出的,您可以使用weights參數來“繪制已經分箱的數據的直方圖”。 您可以在第一步中使用 Numpy 的直方圖函數對數據進行分箱。 然后應用縮放因子很簡單:

from matplotlib import pyplot
import numpy

numpy.random.seed(0)
data = numpy.random.normal(50, 20, 10000)
(counts, bins) = numpy.histogram(data, bins=range(101))

factor = 2
pyplot.hist(bins[:-1], bins, weights=factor*counts)
pyplot.show()

pyplot.histweights參數可用於對每個數據點進行加權,例如

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(42)

data = np.random.normal(50, 20, 10000)

factor = 2
hist_bin_width = 40
plt.hist(data, bins=range(-100, 200, hist_bin_width), 
               weights=factor*np.ones_like(data))
plt.show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM