Matplotlib 直方图
在数据可视化中,直方图是一种基于区间分组的图形表达方式。它显示了一组连续的数据的频率分布。Matplotlib是Python中最常用的绘图库之一,可以用来生成各种各样的图形,包括直方图。本文将介绍如何使用Matplotlib绘制直方图,并将时间放在x轴上。
阅读更多:Matplotlib 教程
Matplotlib绘制简单的直方图
要绘制直方图,我们需要先创建数据,然后使用Matplotlib的hist()函数生成图表。
下面是一个简单的示例:
import matplotlib.pyplot as plt
import numpy as np
# 生成随机数据
data = np.random.randn(1000)
# 绘制直方图
plt.hist(data)
plt.show()
在这个例子中,我们生成了一个包含1000个随机数的数组,并使用plt.hist()函数生成直方图。plt.show()函数用于显示图表。
运行以上代码,我们将得到一个包含1000个随机数的直方图。
定义直方图的bin数量
“bin”是将数据分成的区间。在上面的示例中,Matplotlib自动选择了默认的bin数量(10个)。有时候,我们需要根据自己的需求定义bin的数量。
可以使用plt.hist()函数的“bins”参数来定义bin的数量。
下面的代码使用20个bin绘制了一个包含1000个随机数的直方图:
import matplotlib.pyplot as plt
import numpy as np
# 生成随机数据
data = np.random.randn(1000)
# 绘制直方图
plt.hist(data, bins=20)
plt.show()
将时间放在x轴上
在时间序列数据中,我们通常需要将时间放在x轴上。一种简单的方法是将时间值转换为日期时间对象,然后使用Matplotlib的plot_date()函数或scatter()函数绘制。另一种方法是使用NumPy datetime64数据类型。这种方式更加直接,也更容易处理。
下面是一个使用datetime64数据类型绘制时间序列数据的例子:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
# 生成一些随机日期
dates = pd.date_range('2020-01-01', '2020-12-31')
# 创建一些随机数据
data = np.random.randn(len(dates))
# 绘制直方图
plt.hist(dates, bins=12)
plt.show()
上面的代码中,我们使用Pandas日期范围函数生成了2020年的所有日期,然后生成了与日期数量相等的随机数据。使用plt.hist()函数绘制了直方图,并使用了bins参数将数据分成了12组(每月一个组)。
如果需要将时间设为x轴的刻度标签,我们可以使用Matplotlib的set_xticklabels()函数。
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
# 生成一些随机日期
dates = pd.date_range('2020-01-01', '2020-12-31')
# 创建一些随机数据
data = np.random.randn(len(dates))
# 绘制直方图
plt.hist(dates, bins=12)
plt.xticks(rotation=45)
plt.gca().set_xticklabels([date.strftime('%Y-%m') for date in dates])
plt.show()
在上面的代码中,我们使用了plt.xticks()函数和set_xticklabels()函数,将刻度标签旋转了45度,并将日期字符串格式化为“YYYY-MM”的形式。此时,我们就可以将时间放在x轴上了。
总结
本文介绍了如何使用Matplotlib绘制直方图,包括简单的直方图绘制、定义bin的数量、以及将时间放在x轴上。希望读者可以通过本文了解如何使用Matplotlib绘制直方图,并根据自己的需要定义图形样式和参数。