Seaborn distplot y-Achsen-Normalisierung falsche Ticklabels

Nur zu beachten, ich habe bereits @ überprüdiese Frag unddiese Frag.

Also, ich benutzedistplot, um einige Histogramme auf separaten Unterplots zu zeichnen:

import numpy as np
#import netCDF4 as nc # used to get p0_dict
import matplotlib.pyplot as plt
from collections import OrderedDict
import seaborn.apionly as sns
import cPickle as pickle

''' 
LINK TO PICKLE
https://drive.google.com/file/d/0B8Xks3meeDq0aTFYcTZEZGFFVk0/view?usp=sharing
'''

p0_dict = pickle.load(open('/path/to/pickle/test.dat', 'r'))     

fig = plt.figure(figsize = (15,10))
ax = plt.gca()
j=1

for region, val in p0_dict.iteritems():

    val = np.asarray(val)

    subax = plt.subplot(5,5,j)

    print region

    try:              
        sns.distplot(val, bins=11, hist=True, kde=True, rug=True, 
                     ax = subax, color = 'k', norm_hist=True)

    except Exception as Ex:
        print Ex

    subax.set_title(region)
    subax.set_xlim(0, 1) # the data varies from 0 to 1

    j+=1    

plt.subplots_adjust(left = 0.06, right = 0.99, bottom = 0.07,
                    top = 0.92, wspace = 0.14, hspace = 0.6) 

fig.text(0.5, 0.02, r'$ P(W) = 0,1 

Was ich erwarte, ist, dass der Bereich unter der KDE-Kurve 1 ergibt und dass die y-Achsen-Ticklabels dies widerspiegeln. Allerdings bekomme ich folgendes:

Wie Sie sehen, liegen die y-Achsen-Ticklabels nicht wie erwartet im Bereich [0,1]. Ein- / Ausschaltennorm_hist oderkde ändert dies nicht. Als Referenz ist der Ausgang mit beiden ausgeschaltet:

Nur zur Bestätigung:

aus = np.asarray(p0_dict['AUS'])
aus_bins = np.histogram(aus, bins=11)[0]

plt.subplot(121)
plt.hist(aus,11)
plt.subplot(122)
plt.bar(range(0,11),aus_bins.astype(np.float)/np.sum(aus_bins))

plt.show()

Die y-Ticklabels in diesem Fall geben die eines normalisierten Histogramms korrekt wieder.

Was mache ich falsch

Danke für deine Hilfe

, ha ='center', fontsize = 15) fig.text(0.02, 0.5, '% occurrence', ha ='center', rotation='vertical', fontsize = 15) # obviously I'd multiply the fractional ticklabels by 100 to get # the percentage... plt.show()

Was ich erwarte, ist, dass der Bereich unter der KDE-Kurve 1 ergibt und dass die y-Achsen-Ticklabels dies widerspiegeln. Allerdings bekomme ich folgendes:

Wie Sie sehen, liegen die y-Achsen-Ticklabels nicht wie erwartet im Bereich [0,1]. Ein- / Ausschaltennorm_hist oderkde ändert dies nicht. Als Referenz ist der Ausgang mit beiden ausgeschaltet:

Nur zur Bestätigung:

aus = np.asarray(p0_dict['AUS'])
aus_bins = np.histogram(aus, bins=11)[0]

plt.subplot(121)
plt.hist(aus,11)
plt.subplot(122)
plt.bar(range(0,11),aus_bins.astype(np.float)/np.sum(aus_bins))

plt.show()

Die y-Ticklabels in diesem Fall geben die eines normalisierten Histogramms korrekt wieder.

Was mache ich falsch

Danke für deine Hilfe

Antworten auf die Frage(2)

Ihre Antwort auf die Frage