Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Seaborn距离图y轴归一化错误标签_Python_Matplotlib_Seaborn - Fatal编程技术网

Python Seaborn距离图y轴归一化错误标签

Python Seaborn距离图y轴归一化错误标签,python,matplotlib,seaborn,Python,Matplotlib,Seaborn,请注意,我已经检查过了 因此,我使用distplot在单独的子图上绘制一些直方图: 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 h

请注意,我已经检查过了

因此,我使用
distplot
在单独的子图上绘制一些直方图:

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 $', 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()
我所期望的是KDE曲线下的面积总和为1,y轴标签反映了这一点。但是,我得到了以下信息:

正如您所看到的,y轴标签不在[0,1]范围内,这是意料之中的。打开/关闭
norm_hist
kde
不会改变这一点。作为参考,两个开关都关闭时的输出:

只是为了验证:

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()

在本例中,y标签正确地反映了标准化直方图的标签

我做错了什么


感谢您的帮助。

y轴是密度,而不是概率。我想你期望归一化直方图显示一个概率质量函数,其中条形高度之和等于1。但这是错误的;规格化可确保钢筋高度与钢筋宽度之和等于1。这确保了归一化直方图与核密度估计值具有可比性,核密度估计值经过归一化,因此曲线下的面积等于1。

感谢@mwaskom的澄清。我想我也可以添加一个单独的轴来表示概率?抱歉,如果这看起来有点困惑,我不是很熟悉KDE作为一种技术。这与KDE本身没有任何关系。我会仔细阅读概率和密度之间的区别,这是一个令人困惑的问题,这个问题经常出现在这个网站的统计版本上(例如),尽管我相信其他地方也有很好的解释。