Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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计算直方图下的面积_Python_Histogram_Seaborn_Area - Fatal编程技术网

Python 使用Seaborn计算直方图下的面积

Python 使用Seaborn计算直方图下的面积,python,histogram,seaborn,area,Python,Histogram,Seaborn,Area,我正试图使用此函数计算seaborn直方图下的面积(数据已标准化) 要获得箱子的宽度和我使用的高度值 values_sns=[h.get_height()for h in sns.distplot(data).patches] bins_sns=[h.get_width ()for h in sns.distplot(data).patches] 但它们的长度不同,即71,48。 这是我得到的错误:ValueError:操作数无法与形状(71,)(48,)一起广播 任何帮助都将不胜感激。这里出

我正试图使用此函数计算seaborn直方图下的面积(数据已标准化)

要获得箱子的宽度和我使用的高度值

values_sns=[h.get_height()for h in sns.distplot(data).patches]
bins_sns=[h.get_width ()for h in sns.distplot(data).patches]
但它们的长度不同,即71,48。 这是我得到的错误:ValueError:操作数无法与形状(71,)(48,)一起广播


任何帮助都将不胜感激。

这里出现了一些问题:

  • sns.distplot(数据)
    创建直方图(与kdeplot一起);在上面的代码中,它被调用两次,因此在同一个点上创建两个直方图
  • sns.distplot(data)
    返回绘制它的
    ax
    ax
    包含一个子批次的所有图形元素
  • ax.patches
    返回绘制的所有面片的列表(面片可以是矩形、圆形、闭合曲线等)
  • sns.distplot(data)
    不是给定
    ax
    上的第一个绘图操作时,
    ax.patches
    可以包含之前绘制的元素;特别是调用
    sns.distplot(data)
    两次会使补丁数量翻倍(在这种情况下,似乎绘制了48条)
  • np.diff(料仓)
    将包含后续料仓宽度之间的所有差异。请注意,有一个差异小于有一个值(72个值表示71个差异)。由于通常所有料仓宽度都相等,
    np.diff(料仓)
    将全部为零
  • 要计算总面积,需要将所有单个宽度与所有单个高度相乘
导入matplotlib.pyplot作为plt
导入seaborn作为sns
将numpy作为np导入
数据=np.随机.正常(0,1100)
ax=sns.distplot(数据)
值\u sns=[h.get\u height()表示ax.patches中的h]
bin\u sns=[h.get\u width()表示ax.patches中的h]
总面积=总和([高度*宽度表示高度,宽度表示拉链(数值、箱子)]
#总面积=np.sum(np.array(bin_sns)*np.array(values_sns))#使用numpy更短更快
打印(“总面积:,总面积)#1.0

有点晚了,对不起。谢谢你的帮助
values_sns=[h.get_height()for h in sns.distplot(data).patches]
bins_sns=[h.get_width ()for h in sns.distplot(data).patches]