Python-熊猫直方图宽度

时间:2018-06-26 14:36:42

标签: python pandas plot histogram

我正在对从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()

PD:如果您想了解数据,我只是从0到1的随机分布。

1 个答案:

答案 0 :(得分:1)

您可以使用hist_kwds函数的scatter_matrix参数将其他参数传递给熊猫直方图。如果您想要十个宽度为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)]})

有关熊猫直方图的其他参数可以在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

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