<i id='kHNH0'><tr id='kHNH0'><dt id='kHNH0'><q id='kHNH0'><span id='kHNH0'><b id='kHNH0'><form id='kHNH0'><ins id='kHNH0'></ins><ul id='kHNH0'></ul><sub id='kHNH0'></sub></form><legend id='kHNH0'></legend><bdo id='kHNH0'><pre id='kHNH0'><center id='kHNH0'></center></pre></bdo></b><th id='kHNH0'></th></span></q></dt></tr></i><div id='kHNH0'><tfoot id='kHNH0'></tfoot><dl id='kHNH0'><fieldset id='kHNH0'></fieldset></dl></div>
  • <small id='kHNH0'></small><noframes id='kHNH0'>

      <tfoot id='kHNH0'></tfoot>
      <legend id='kHNH0'><style id='kHNH0'><dir id='kHNH0'><q id='kHNH0'></q></dir></style></legend>
        <bdo id='kHNH0'></bdo><ul id='kHNH0'></ul>

        绘制直方图,使总高度等于1

        时间:2024-08-20
      1. <i id='rFPHa'><tr id='rFPHa'><dt id='rFPHa'><q id='rFPHa'><span id='rFPHa'><b id='rFPHa'><form id='rFPHa'><ins id='rFPHa'></ins><ul id='rFPHa'></ul><sub id='rFPHa'></sub></form><legend id='rFPHa'></legend><bdo id='rFPHa'><pre id='rFPHa'><center id='rFPHa'></center></pre></bdo></b><th id='rFPHa'></th></span></q></dt></tr></i><div id='rFPHa'><tfoot id='rFPHa'></tfoot><dl id='rFPHa'><fieldset id='rFPHa'></fieldset></dl></div>

        <small id='rFPHa'></small><noframes id='rFPHa'>

              <bdo id='rFPHa'></bdo><ul id='rFPHa'></ul>

              <legend id='rFPHa'><style id='rFPHa'><dir id='rFPHa'><q id='rFPHa'></q></dir></style></legend>
                  <tbody id='rFPHa'></tbody>
              • <tfoot id='rFPHa'></tfoot>
                • 本文介绍了绘制直方图,使总高度等于1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  这是answer的后续问题。我正在尝试绘制归一化直方图,但得到的不是y轴上的最大值1,而是不同的数字。

                  对于数组k=(1,4,3,1)

                   import numpy as np
                  
                   def plotGraph():
                     
                      import matplotlib.pyplot as plt
                      
                      k=(1,4,3,1)
                  
                      plt.hist(k, normed=1)
                  
                      from numpy import *
                      plt.xticks( arange(10) ) # 10 ticks on x axis
                  
                      plt.show()  
                      
                  plotGraph()
                  

                  我得到这个直方图,它看起来不像是规格化的。

                  对于不同的数组,k=(3,3,3,3)

                   import numpy as np
                  
                   def plotGraph():
                     
                      import matplotlib.pyplot as plt
                      
                      k=(3,3,3,3)
                  
                      plt.hist(k, normed=1)
                  
                      from numpy import *
                      plt.xticks( arange(10) ) # 10 ticks on x axis
                  
                      plt.show()  
                      
                  plotGraph()
                  

                  我得到的直方图的最大y值为10。

                  对于不同的k,即使Normded=1或Normed=True,我也会获得不同的y的最大值。

                  为什么规范化(如果有效)会根据数据进行更改,以及如何使y的最大值等于1?

                  更新:

                  我正在尝试实现来自plotting histograms whose bar heights sum to 1 in matplotlib的Carsten Knig答案,但得到非常奇怪的结果:

                  import numpy as np
                  
                  def plotGraph():
                  
                      import matplotlib.pyplot as plt
                  
                      k=(1,4,3,1)
                  
                      weights = np.ones_like(k)/len(k)
                      plt.hist(k, weights=weights)
                  
                      from numpy import *
                      plt.xticks( arange(10) ) # 10 ticks on x axis
                  
                      plt.show()  
                  
                  plotGraph()
                  

                  结果:

                  我做错了什么?

                  推荐答案

                  绘制归一化直方图时,曲线下的面积总和应为1,而不是高度。

                  In [44]:
                  
                  import matplotlib.pyplot as plt
                  k=(3,3,3,3)
                  x, bins, p=plt.hist(k, density=True)  # used to be normed=True in older versions
                  from numpy import *
                  plt.xticks( arange(10) ) # 10 ticks on x axis
                  plt.show()  
                  In [45]:
                  
                  print bins
                  [ 2.5  2.6  2.7  2.8  2.9  3.   3.1  3.2  3.3  3.4  3.5]
                  

                  在此示例中,箱宽为0.1,曲线下面的面积总和为1(0.1*10)。

                  x存储每个垃圾箱的高度。p存储每个单独的存储箱对象(实际上,它们是patches。因此,我们只需汇总x并修改每个bin对象的高度。

                  若要使高度之和为1,请在plt.show()之前添加以下内容:

                  for item in p:
                      item.set_height(item.get_height()/sum(x))
                  

                  这篇关于绘制直方图,使总高度等于1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:如何使用条形图缩放Seborn的y轴 下一篇:如何使用海运dislot/histlot/dislot绘制百分比

                  相关文章

                    <bdo id='0Vm6N'></bdo><ul id='0Vm6N'></ul>

                  1. <small id='0Vm6N'></small><noframes id='0Vm6N'>

                    <legend id='0Vm6N'><style id='0Vm6N'><dir id='0Vm6N'><q id='0Vm6N'></q></dir></style></legend><tfoot id='0Vm6N'></tfoot>
                  2. <i id='0Vm6N'><tr id='0Vm6N'><dt id='0Vm6N'><q id='0Vm6N'><span id='0Vm6N'><b id='0Vm6N'><form id='0Vm6N'><ins id='0Vm6N'></ins><ul id='0Vm6N'></ul><sub id='0Vm6N'></sub></form><legend id='0Vm6N'></legend><bdo id='0Vm6N'><pre id='0Vm6N'><center id='0Vm6N'></center></pre></bdo></b><th id='0Vm6N'></th></span></q></dt></tr></i><div id='0Vm6N'><tfoot id='0Vm6N'></tfoot><dl id='0Vm6N'><fieldset id='0Vm6N'></fieldset></dl></div>