📅  最后修改于: 2023-12-03 15:04:36.941000             🧑  作者: Mango
直方图是用来表示数据分布情况的一种图形统计方法,它将数据分成若干个小区间,将落在每个小区间内的数据统计个数,最终得到一个柱状图,用来描述数据集中的分布情况。
在Python中,我们可以使用matplotlib库来绘制直方图。matplotlib提供了hist函数用于绘制直方图,该函数的参数可以自定义,适配不同的数据需要。
下面是一个基本的绘制直方图的示例代码:
import numpy as np
import matplotlib.pyplot as plt
x = np.random.randn(1000) # 生成随机数据
plt.hist(x, bins=50, color='steelblue', density=True) # 绘制直方图
plt.show() # 显示图像
上述代码中,我们使用numpy库生成了一个包含1000个随机数的数据x。然后通过hist函数绘制直方图,其中bins参数指定数据分成的小区间数,color参数指定柱状图的颜色,density参数设为True时绘制的直方图为概率密度直方图,否则为频数直方图。
除了使用hist函数提供的默认参数外,我们还可以根据具体需求自定义直方图的参数,以更好地适配我们的数据。
下面是自定义直方图参数的示例代码:
import numpy as np
import matplotlib.pyplot as plt
x = np.random.randn(1000) # 生成随机数据
n, bins, patches = plt.hist(x, bins=50, color='steelblue', edgecolor='k',
alpha=0.7, density=True, cumulative=False,
histtype='stepfilled', align='mid', orientation='vertical',
rwidth=None, log=False, label='data')
plt.xlabel('Values') # x轴标签
plt.ylabel('Frequency') # y轴标签
plt.title('Histogram of Random Data') # 图表标题
plt.legend(loc='best') # 图例位置
plt.grid(axis='y', alpha=.75) # 网格线
plt.show() # 显示图像
在上述代码中,我们增加了edgecolor参数来设置直方图边框颜色,alpha参数用于设置柱状颜色的透明度,cumulative参数为True时绘制的直方图为累计直方图,否则为普通直方图。histtype参数用于设置直方图的类型,包括'step'(绘制竖线),'stepfilled'(绘制填充的直方图)和'bar'(绘制普通柱状图)。
有时候,由于数据集的分布情况,我们可能需要对直方图进行一定程度的拉伸,以更好地显示数据的分布情况。下面是一个简单的拉伸直方图的实现代码:
import numpy as np
import matplotlib.pyplot as plt
x = np.random.normal(0, 1, 500) # 生成符合正态分布的数据
bins = np.linspace(-5, 5, 51) # 分成50个小区间
pdf, _, _ = plt.hist(x, bins=bins, density=True) # 绘制直方图
pdf_max = np.max(pdf) # 获取pdf最大值
plt.plot(bins, pdf / pdf_max, color='r') # 拉伸直方图
plt.show() # 显示图像
上述代码中,我们使用numpy库生成了一个符合标准正态分布的数据集,然后分成50个小区间,使用hist函数绘制直方图,获取直方图的pdf值,将其最大值标准化为1,然后绘制拉伸后的直方图。
以上就是Python中绘制直方图和拉伸直方图的基本方法和示例代码。在实际分析数据时,我们需要根据具体需求,合理设置直方图的参数和拉伸程度,以更好地描述数据的分布情况。