2017-01-12 13 views
0

私はmatplotlibとscypyを使っていくつかの分布の適合を比較するコードを作った。コードのthats:matplotlib .plot関数描画複数回

listvar = [sessioninterval, playtime, sessiontime, pausetime] 
listnames1 = ["Sessioninterval", "Playtime", "Sessiontime", "Pausetime"] 

expfit= [] 
normfit = [] 
lognormfit = [] 

for p in listvar: 
    expfit.append(stats.expon.fit(p, floc = 0)) 
    normfit.append(stats.norm.fit(p)) 
    lognormfit.append(stats.lognorm.fit(p)) 

for q in range(4): 
    plt.hist(listvar[q], bins = len(listvar[q]), normed = True, cumulative = True, histtype = "step", color = "black", label = "EDF") 
    plt.plot(listvar[q],stats.expon.cdf(listvar[q],*expfit[q]) , color = 'blue',label = "Exponencial Fit: " + str(expfit[q])) 
    plt.plot(listvar[q],stats.norm.cdf(listvar[q], *normfit[q]), '-',color = 'red', label = "Normal Fit: "+ str(normfit[q])) 
    plt.plot(listvar[q],stats.lognorm.cdf(listvar[q], *lognormfit[q]), '-',color = 'green', label = "Log-Normal Fit: " + str(lognormfit[q])) 
    plt.title("Probability Fit: " + str(listnames1[q])) 
    plt.xlabel("Value") 
    plt.ylabel("Probability") 
    plt.xlim(min(listvar[q]), max(listvar[q])) 
    plt.ylim(0,1) 
    plt.legend(bbox_to_anchor = (1.05,-0.1), fontsize = 10) 
    plt.gcf().subplots_adjust(bottom=0.24) 
    plt.savefig("Probability_" + listnames1[q] +".png") 
    plt.clf() 

を、これは結果

enter image description here

なぜこれが起こっているの例ですか?ありがとう!

+0

ポイント( 'listvar [q]')はソートされません。それらを最初に並べ替えるか、plt.scatterを使って点を線で結ばずに描画します。 – VBB

+0

それは働いた!ありがとう。 –

答えて

0

Matplotでは、プロットする前にポイントをソートする必要があります。

あなたが見ているのは、ソートされていないポイントを接続していることです。それは何度もプロットしていません。

関連する問題