代码之家  ›  专栏  ›  技术社区  ›  J.Agusti

python-pandas直方图宽度

  •  0
  • J.Agusti  · 技术社区  · 6 年前

    我正在做一个从0到1的数据的柱状图。当我策划的时候我得到了这个

    Histogram

    如您所见,直方图“块”与Y轴不对齐。 有没有办法设置我的柱状图,以便得到一个恒定宽度为0.1的柱状图?或者我应该试试不同的套餐吗?

    我的代码很简单:

    import pandas as pd
    import numpy as np
    from pandas.plotting import scatter_matrix
    import matplotlib.pyplot as plt
    
    np.set_printoptions(precision=10,
                           threshold=10000,
                           linewidth=150,suppress=True)
    
    E=pd.read_csv("FQCoherentSeparableBons5.csv")
    E = E.ix[0:,1:]
    
    E=np.array(E,float)
    
    P0=E[:,0]
    
    P0=pd.DataFrame(P0,columns=['P0'])
    
    scatter_matrix(P0, alpha=0.2, figsize=(6, 6), diagonal='hist',color="red")
    plt.suptitle('Distribucio p0')
    plt.ylabel('Frequencia p0')
    plt.show()
    

    警察:如果你想知道数据,我只是从0到1的随机分布。

    1 回复  |  直到 6 年前
        1
  •  1
  •   hoffee    6 年前

    您可以使用 hist_kwds 的论点 scatter_matrix 功能。如果你想要10个宽度为0.1的箱子,那么 散射矩阵 电话应该看起来像

    scatter_matrix(P0, alpha=0.2, figsize=(6, 6), diagonal='hist', color="red", 
                   hist_kwds={'bins':[i*0.1 for i in range(11)]})
    

    熊猫直方图的其他参数可以在 documentation 是的。

    这里有一个简单的例子。我在绘图中添加了一个网格,以便您可以看到箱子正确对齐。

    import numpy as np
    import pandas as pd
    from pandas import scatter_matrix
    import matplotlib.pyplot as plt
    
    x = np.random.uniform(0,1,100)
    
    scatter_matrix(pd.DataFrame(x), diagonal='hist', 
                   hist_kwds={'bins':[i*0.1 for i in range(11)]})
    plt.xlabel('x')
    plt.ylabel('frequency')
    plt.grid()
    plt.show()
    

    Histogram

    默认情况下,直方图中的存储箱数为10,但仅仅因为数据分布在0和1之间并不意味着存储箱将在范围内均匀分布。例如,如果您实际上没有一个等于1的数据点,您将得到一个与问题中的结果类似的结果。