web-dev-qa-db-ja.com

matplotlib hist()自動トリミング範囲

特定の範囲でヒストグラムを作成しようとしていますが、matplotlib.pyplot.hist()関数は、エントリが含まれるビンに範囲をトリミングし続けます。おもちゃの例:

import numpy as np
import matplotlib.pyplot as plt

x = np.random.uniform(-100,100,1000)

nbins = 100
xmin = -500
xmax = 500

fig = plt.figure(); 
ax = fig.add_subplot(1, 1, 1)
ax.hist(x, bins=nbins,range=[xmin,xmax])  
plt.show()

範囲が[-100,100]のプロットを示します。範囲が指定どおり[-500,500]でないのはなぜですか?

(私はEnthought Canopy 1.4を使用していますが、申し訳ありませんが、プロットの画像を投稿するのに十分な高さの担当者がいません。)

10
Keith

実際には、rangeで_[-100, 100]_より短い間隔を指定すると機能します。たとえば、この作品:

_import numpy as np
import matplotlib.pyplot as plt

x = np.random.uniform(-100, 100, 1000)
plt.hist(x, bins=30, range=(-50, 50))
plt.show()
_

[x.min(), x.max()]より大きい範囲にヒストグラムをプロットする場合は、プロットのxlimプロパティを変更できます。

_import numpy as np
import matplotlib.pyplot as plt

x = np.random.uniform(-100, 100, 1000)
plt.hist(x, bins=30)
plt.xlim(-500, 500)
plt.show()
_
18
Ger

次のコードは、2つのサブプロットで同じy軸制限を作成するためのものです

f ,ax = plt.subplots(1,2,figsize = (30, 13),gridspec_kw={'width_ratios': [5, 1]})
df.plot(ax = ax[0], linewidth = 2.5)
ylim = [df['min_return'].min()*1.1,df['max_return'].max()*1.1]
ax[0].set_ylim(ylim)
ax[1].hist(data,normed =1, bins = num_bin, color = 'yellow' ,alpha = 1) 
ax[1].set_ylim(ylim)
0
Jingkai Xu