下面是一个基于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()函数在频率图中添加最后一个箱子的标注。
希望这个示例代码能够满足你的需求!