19

統計にはSciPyを、プロットにはmatplotlibを使用して、Pythonで分布のプロットとフィッティングを少ししようとしています。ヒストグラムの作成など、いくつかのことで幸運を祈っています:

seed(2)
alpha=5
loc=100
beta=22
data=ss.gamma.rvs(alpha,loc=loc,scale=beta,size=5000)
myHist = hist(data, 100, normed=True)

ここに画像の説明を入力

素晴らしい!

同じガンマ パラメーターを使用して、確率分布関数の線関数をプロットすることもできます (グーグルで調べた後)。

rv = ss.gamma(5,100,22)
x = np.linspace(0,600)
h = plt.plot(x, rv.pdf(x))

ここに画像の説明を入力

myHistヒストグラムの上に PDF ラインをh重ねてヒストグラムをプロットするにはどうすればよいですか? 私はこれが些細なことだと思っていますが、私はそれを理解することができませんでした.

4

3 に答える 3

18

両方のピースを組み合わせるだけです。

import scipy.stats as ss
import numpy as np
import matplotlib.pyplot as plt
alpha, loc, beta=5, 100, 22
data=ss.gamma.rvs(alpha,loc=loc,scale=beta,size=5000)
myHist = plt.hist(data, 100, normed=True)
rv = ss.gamma(alpha,loc,beta)
x = np.linspace(0,600) 
h = plt.plot(x, rv.pdf(x), lw=2)
plt.show()

ここに画像の説明を入力してください

特定のプロットインスタンスで必要なものを確実に取得するには、figure最初にオブジェクトを作成してみてください

import scipy.stats as ss
import numpy as np
import matplotlib.pyplot as plt
# setting up the axes
fig = plt.figure(figsize=(8,8))
ax  = fig.add_subplot(111)
# now plot
alpha, loc, beta=5, 100, 22
data=ss.gamma.rvs(alpha,loc=loc,scale=beta,size=5000)
myHist = ax.hist(data, 100, normed=True)
rv = ss.gamma(alpha,loc,beta)
x = np.linspace(0,600)
h = ax.plot(x, rv.pdf(x), lw=2)
# show
plt.show()
于 2012-07-03T17:43:08.007 に答える
6

任意のヒストグラムの分布関数をプロットすることに興味があるかもしれません。これはseaborn kde関数を使用して行うことができます

import numpy as np # for random data
import pandas as pd  # for convinience
import matplotlib.pyplot as plt  # for graphics
import seaborn as sns  # for nicer graphics

v1 = pd.Series(np.random.normal(0,10,1000), name='v1')
v2 = pd.Series(2*v1 + np.random.normal(60,15,1000), name='v2')

# plot a kernel density estimation over a stacked barchart
plt.figure()
plt.hist([v1, v2], histtype='barstacked', normed=True);
v3 = np.concatenate((v1,v2))
sns.kdeplot(v3);
plt.show()

ここに画像の説明を入力 Python を使用したデータの視覚化に関する coursera コースから

于 2018-01-07T21:56:48.450 に答える