欢迎访问宙启技术站
智能推送

使用Python的函数绘制直方图

发布时间:2023-06-26 18:03:32

直方图是一个统计图表,用于表示一组连续分布的数据的频率分布。它能够显示数据的分布方式,有助于我们进行数据分析和判断。在Python中,可以使用matplotlib库的hist()函数绘制直方图。

hist()函数的基本结构为:

matplotlib.pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, *, data=None, **kwargs)

x:指定绘图数据;

bins:指定直方图中条形的个数;

range:指定直方图中的数据范围,若不指定,则默认为最大值和最小值的范围;

density:布尔值,表示是否绘制密度曲线,默认为False;

weights:权值,可为每一个数据点设置权值;

cumulative:布尔值,表示是否需要累计直方图,默认为False;

bottom:数据的起始位置,默认为0;

histtype:指定直方图的类型,默认为bar;

align:设置条形的对齐方式,默认为mid,即中间对齐;

orientation:设置直方图的方向,默认为vertical,即竖直方向;

rwidth:设置直方图条形宽度的占比,默认为1;

log:布尔值,表示Y轴是否需要使用对数刻度,默认为False;

color:指定直方图的颜色;

label:设置图例;

stacked:布尔值,表示是否堆叠直方图,默认为False。

绘制直方图的前提是有数据,接下来就介绍一下如何获取数据。

1、使用numpy库的random模块生成随机数组

import numpy as np

np.random.seed(10) # 将生成随机数生成器的种子设为10,这样每次运行程序时,生成的随机数值序列都是一样的

data = np.random.randn(1000) # 生成1000个符合标准正态分布的随机数

2、使用pandas库的read_csv()函数读取csv文件中的数据

import pandas as pd

data = pd.read_csv('data.csv', header=None)

data = data[0] # 读取第一列的数据

以上两种方式都可以获取到数据,将它们传入hist()函数即可绘制直方图。

下面是完整的代码:

import numpy as np

import matplotlib.pyplot as plt

np.random.seed(10) # 将生成随机数生成器的种子设为10,这样每次运行程序时,生成的随机数值序列都是一样的

data = np.random.randn(1000) # 生成1000个符合标准正态分布的随机数

plt.hist(data, bins=50, color='steelblue', density=True)

plt.xlabel('Value')

plt.ylabel('Frequency')

plt.show()

在执行完以上代码后,会得到一张直方图,它显示了数据分布的情况,如下图所示。

![image.png](attachment:36e8f517-5703-44c8-b092-97f1d7d0524d.png)

可以看到,直方图中的每个条形代表一个数值区间,横轴表示数值区间,纵轴表示数据在相应的区间内出现的频数。我们可以看到,标准正态分布的数据呈钟形分布,且数据分布密度最大处位于均值附近,这也是正态分布的一个特征。

直方图是数据分析中经常用到的一种工具,能够直观地展示数据分布的情况,帮助我们理解数据和发现数据的规律,所以掌握直方图的绘制方法对于数据分析是非常重要的。