python在同一张图中展示数据的直方图和核密度图(提示:secondary_y)
时间: 2024-10-21 15:09:22 浏览: 42
在Python中,可以使用matplotlib库中的`subplots`函数在同一幅图中同时显示直方图和核密度估计图。`secondary_y`参数特别适用于在这种场景下,它允许你在共享x轴的基础上添加第二个y轴,用于展示不同类型的数据。
例如,你可以这样做:
```python
import matplotlib.pyplot as plt
import numpy as np
# 创建一些数据
data1 = np.random.randn(1000)
data2 = np.random.randn(1000) + 5
fig, ax1 = plt.subplots()
# 绘制主y轴的直方图
ax1.hist(data1, bins='auto', label='Data 1', color='blue')
ax1.set_ylabel('Frequency', color='blue')
# 添加一个新的y轴(secondary_y)
ax2 = ax1.twinx()
n, bins, patches = ax2.hist(data2, bins='auto', density=True, alpha=0.7,
label='Kernel Density Estimate', color='red')
ax2.set_ylabel('Density', color='red')
ax2.yaxis.grid(True)
# 设置标题和图例
fig.suptitle('Histogram and Kernel Density Estimation')
ax1.legend(loc='upper left')
ax2.legend(loc='upper right')
plt.show()
```
在这个例子中,`ax1`负责直方图,而`ax2`则展示了基于`data2`的核密度估计图,其数据量纲通过调整为概率密度(density=True)来适应新的y轴。
阅读全文