下面是一个基于matplotlib库的示例代码,用于绘制不同宽度的频率图,并找到最后一个箱子:
import matplotlib.pyplot as plt
import numpy as np
# 生成随机数据
np.random.seed(0)
data = np.random.randn(1000)
# 设置箱子的宽度
bin_widths = [0.1, 0.5, 1.0]
plt.figure(figsize=(10, 6))
# 绘制不同宽度的频率图
for i, width in enumerate(bin_widths):
plt.subplot(len(bin_widths), 1, i+1)
plt.hist(data, bins=np.arange(min(data), max(data) + width, width), color='skyblue', edgecolor='black')
plt.title(f'Bin Width: {width}')
plt.xlabel('Value')
plt.ylabel('Frequency')
# 找到最后一个箱子的相关信息
last_bin = plt.hist(data, bins=np.arange(min(data), max(data) + width, width), color='skyblue', edgecolor='black')[-1]
last_bin_index = np.where(last_bin != 0)[0][-1] # 找到最后一个非零箱子的索引
last_bin_value = last_bin[last_bin_index] # 最后一个非零箱子的频率值
# 在频率图中添加最后一个箱子的标注
plt.annotate(f'Last Bin: {last_bin_value}', xy=(last_bin_index * width, last_bin_value),
xytext=(last_bin_index * width, last_bin_value + 10),
arrowprops=dict(arrowstyle='->'))
plt.tight_layout()
plt.show()
这段代码通过循环遍历不同的箱子宽度,使用plt.hist()
函数绘制频率直方图。然后,通过获取最后一个箱子的相关信息,使用plt.annotate()
函数在频率图中添加最后一个箱子的标注。
希望这个示例代码能够满足你的需求!