Matplotlib 直方图

Matplotlib 直方图

在数据分析过程中,直方图是常用的一种图像类型。它可以将数据分成若干个区间并统计每个区间的频数,将结果以条形图的形式表现出来。Matplotlib是一个流行的Python数据可视化工具,它提供了多种绘制直方图的方法。

阅读更多:Matplotlib 教程

导入Matplotlib

我们需要首先导入Matplotlib库和Numpy库。

import matplotlib.pyplot as plt 
import numpy as np
Python

创建数据

我们使用Numpy的random函数创建一个包含1000个随机整数的数组作为示例数据:

np.random.seed(42)
data = np.random.randint(0, 100, 1000)
Python

np.random.seed(42)用于固定随机数生成器的种子,以便每次运行程序时得到相同的随机数据,这有助于保证结果的可重复性。

Matplotlib中的hist函数

我们可以使用Matplotlib中的hist函数绘制直方图。该函数接受一个数组作为输入并绘制所有值的直方图。默认情况下,直方图将数据分成10个等宽区间,并返回每个区间中值的数量。

plt.hist(data)
plt.show()
Python

可以看到,Matplotlib绘制了一个包含10个区间的直方图。x轴表示数据的取值范围,y轴表示每个区间中值的数量。

我们可以通过传递额外的参数来控制直方图的行为。例如,可以设置分组数:

plt.hist(data, bins=20)
plt.show()
Python

bins属性设置输出直方图的条形个数。

控制直方图颜色和样式

我们可以使用color属性来控制直方图的填充颜色:

plt.hist(data, color='orange')
plt.show()
Python

还可以添加边框线:

plt.hist(data, edgecolor='black')
plt.show()
Python

linewidth属性可以用于调整边框线的宽度:

plt.hist(data, edgecolor='black', linewidth=1.2)
plt.show()
Python

默认情况下,Matplotlib使用条形的高度表示每个区间中值的数量。我们可以将其替换为每个区间中值的概率,以展示更有意义的结果。这可以通过设置density属性为True来实现。

plt.hist(data, edgecolor='black', linewidth=1.2, density=True)
plt.show()
Python

注意,标准化后,y轴的值不再是次数,而是概率密度。

直方图的标签

我们可以为直方图添加标签和标题,以提供更多信息。我们可以使用xlabelylabel属性为x轴和y轴添加标签,使用title属性为直方图添加标题。

plt.hist(data, edgecolor='black', linewidth=1.2, density=True)
plt.xlabel('Value Range')
plt.ylabel('Probability')
plt.title('Histogram of Random Data')
plt.show()
Python

Matplotlib时间轴上的直方图

我们经常需要使用直方图来对与时间相关的数据进行分析。在Matplotlib中,我们可以通过将时间数据转换为数字类型再进行处理来绘制时间轴上的直方图。

以下是一个示例,我们生成了一些时间数据并创建了一个日期范围对象:

import pandas as pd

date_rng = pd.date_range(start='1/1/2020', end='1/10/2020', freq='H')
data = np.random.randint(0, 100, size=(len(date_rng)))
df = pd.DataFrame({'date': date_rng, 'data': data})
Python

其中,pd.date_range用于生成一个日期的范围对象,freq属性表示时间间隔为小时。

然后,我们可以将日期转换为数字类型,并对其进行直方图分析:

dates = df['date'].map(lambda d: d.timestamp())
plt.hist(dates, edgecolor='black', linewidth=1.2)
plt.xlabel('Date')
plt.ylabel('Count')
plt.title('Histogram of Time Data')
plt.show()
Python

可以看到,我们成功地绘制了时间轴上的直方图,并发现在1月4日和1月10日之间有一个相对高的数据峰值。

总结

在本文中,我们介绍了Matplotlib中直方图的绘制方法和常见的参数调整。此外,我们还讨论了如何将时间数据转换为数字类型,并在时间轴上绘制直方图。希望这篇文章对你有所帮助!

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册