python判断多个正态分布曲线是否有双峰曲线存在,并将双峰的曲线颜色标红,加粗,高亮显示
时间: 2023-08-16 08:05:46 浏览: 262
可以使用Python中的SciPy库和Matplotlib库来实现这个功能。具体步骤如下:
1. 导入所需的库和数据
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
# 生成多个正态分布数据
data1 = np.random.normal(0, 1, 1000)
data2 = np.random.normal(4, 1, 1000)
data3 = np.random.normal(-4, 1, 1000)
```
2. 绘制多个正态分布曲线
```python
# 绘制三个正态分布曲线
plt.figure(figsize=(8,6))
plt.hist(data1, bins=50, alpha=0.5, density=True)
plt.hist(data2, bins=50, alpha=0.5, density=True)
plt.hist(data3, bins=50, alpha=0.5, density=True)
plt.title('Multiple Normal Distributions')
plt.show()
```
3. 判断是否存在双峰曲线
```python
# 判断是否存在双峰曲线
peaks1, _ = signal.find_peaks(np.histogram(data1, bins=50)[0])
peaks2, _ = signal.find_peaks(np.histogram(data2, bins=50)[0])
peaks3, _ = signal.find_peaks(np.histogram(data3, bins=50)[0])
if len(peaks1) == 2:
plt.hist(data1, bins=50, alpha=0.5, density=True, color='r', linewidth=3)
else:
plt.hist(data1, bins=50, alpha=0.5, density=True)
if len(peaks2) == 2:
plt.hist(data2, bins=50, alpha=0.5, density=True, color='r', linewidth=3)
else:
plt.hist(data2, bins=50, alpha=0.5, density=True)
if len(peaks3) == 2:
plt.hist(data3, bins=50, alpha=0.5, density=True, color='r', linewidth=3)
else:
plt.hist(data3, bins=50, alpha=0.5, density=True)
plt.title('Multiple Normal Distributions')
plt.show()
```
这样,如果存在双峰曲线,对应的直方图柱子就会被标红、加粗、高亮显示。
阅读全文
相关推荐
















