2016-07-07 9 views
3

これはquestionに触発されていますが、どのようにして同じ種類のプロットをPythonで作っていますか?このプロットは、あなたの流通が期待された流通からどのようにずれているかを視覚的に表現することを目指しています。ヒストグラムのバーを予想分布線にぶら下げているので、期待値との差は、バーの上端と予想される分布曲線の間ではなく、バーの下端とx軸の間で読み取られます。ぶら下がったルートグラムをどのようにプロットするのですか?

組み込み機能が見つかりませんでした。

hanging rootogram

答えて

7

アイデアは、バーの上部が期待値である場合だけヒストグラムプロットの各バーを移動することです:

import matplotlib.pyplot as plt 
import numpy as np 
import matplotlib.mlab as mlab 

fig, ax = plt.subplots(1, 2) 
mu = 10 
sig = 0.3 
my_data = np.random.normal(mu, sig, 200) 
x = np.linspace(9, 11, 100) 

# I plot the data twice, one for the histogram only for comparison, 
# and one for the rootogram. 
# The trick will be to modify the histogram to make it hang to 
# the expected distribution curve: 

for a in ax: 
    a.hist(my_data, normed=True) 
    a.plot(x, mlab.normpdf(x, mu, sig)) 
    a.set_ylim(-0.2) 
    a.set_xlim(9, 11) 
    a.hlines(0, 9, 11, linestyle="--") 

for rectangle in ax[1].patches: 

    # expected value in the middle of the bar 
    exp = mlab.normpdf(rectangle.get_x() + rectangle.get_width()/2., mu, sig) 

    # difference to the expected value 
    diff = exp - rectangle.get_height() 
    rectangle.set_y(diff) 

    ax[1].plot(rectangle.get_x() + rectangle.get_width()/2., exp, "ro") 

ax[0].set_title("histogram") 
ax[1].set_title("hanging rootogram") 
plt.tight_layout() 

います:

Hanging rootogram python

HTH

関連する問題