【问题标题】:Python - Pandas histogram widthPython - 熊猫直方图宽度
【发布时间】:2018-12-05 07:57:06
【问题描述】:

我正在绘制一组从 0 到 1 的数据的直方图。当我绘制时,我得到了这个

如您所见,直方图“块”不与 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()

PD:如果您对数据感到疑惑,I 只是从 0 到 1 的随机分布。

【问题讨论】:

    标签: python pandas plot histogram


    【解决方案1】:

    您可以使用scatter_matrix 函数的hist_kwds 参数将其他参数传递给pandas 直方图。如果你想要十个宽度为 0.1 的箱子,那么你的 scatter_matrix 调用应该是这样的

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

    pandas 直方图的其他参数可以在documentation 中找到。

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

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

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

    【讨论】:

    • 这正是我想要的。谢谢!
    猜你喜欢
    • 2013-07-05
    • 2020-10-19
    • 2018-07-05
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    相关资源
    最近更新 更多