要实现“不同y轴刻度的直方图叠加”,可以使用Matplotlib库来生成多个子图,并为每个子图设置不同的y轴刻度。以下是一个示例代码:
import numpy as np
import matplotlib.pyplot as plt
# 生成数据
data1 = np.random.normal(0, 1, 1000)
data2 = np.random.normal(0, 10, 1000)
# 创建画布和子图
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
# 绘制直方图
ax1.hist(data1, bins=30, color='blue', alpha=0.5)
ax2.hist(data2, bins=30, color='red', alpha=0.5)
# 设置y轴刻度
ax1.set_ylim([0, 70]) # 设置第一个子图的y轴刻度范围
ax2.set_ylim([0, 200]) # 设置第二个子图的y轴刻度范围
# 设置标签和标题
ax1.set_xlabel('Value')
ax1.set_ylabel('Frequency (blue)')
ax2.set_ylabel('Frequency (red)')
plt.title('Histogram')
# 显示图形
plt.show()
在这个示例中,我们使用了numpy.random.normal
函数生成了两组随机数据data1
和data2
,分别代表两个直方图的数据。然后,我们使用plt.subplots
创建了一个画布和一个子图ax1
,并使用ax1.twinx()
创建了一个与ax1
共享x轴但具有独立y轴的第二个子图ax2
。接下来,我们使用ax1.hist
和ax2.hist
分别绘制了两个直方图。然后,我们分别使用ax1.set_ylim
和ax2.set_ylim
设置了两个子图的y轴刻度范围。最后,我们使用ax1.set_xlabel
、ax1.set_ylabel
和ax2.set_ylabel
设置了标签,使用plt.title
设置了标题,并使用plt.show
显示了图形。
注意,上述示例中的直方图是叠加在一起显示的,而不是重叠显示。如果需要将直方图重叠显示,可以使用参数density=True
来对数据进行归一化处理。