将上述代码整合成一个函数
时间: 2024-09-07 10:01:39 浏览: 58
这段代码可以整理成一个通用的函数,接受数据集、采样大小、是否进行异常值移除等参数,下面是函数化的版本:
```python
import numpy as np
import matplotlib.pyplot as plt
from typing import List
def plot_and_clean_data(dataset: List[np.ndarray], sample_size: int, remove_outliers: bool, labels: List[str]):
fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(10, 8), sharex=True, sharey=True)
for i, (data, ax, label) in enumerate(zip(dataset, axs.flatten(), labels)):
# 从数据集中随机抽取指定大小的样本
sampled_data = np.random.choice(data, size=sample_size)
# 绘制原始数据离散点图
ax.scatter(range(sampled_data.size), sampled_data, color='blue', label=f'{label}原始数据')
if remove_outliers:
# 如果需要,移除粗大误差值
cleaned_data = remove_outliers(sampled_data)
ax.scatter(range(cleaned_data.size), cleaned_data, color='orange', label=f'{label}剔除误差值后数据')
ax.set_title(f'{label}数据离散点图')
ax.set_ylabel(label, fontproperties='Times New Roman')
ax.legend(prop={'family': 'Simsun'}, loc='lower right')
# 共享X轴标签
axs[0, 0].set_xlabel('Index', fontproperties='Simsun')
plt.tight_layout()
plt.show()
# 调用函数,提供数据集、采样大小和其他参数
data_sets = [N1_data, N2_data, EGT_data, FF_data]
sample_size = 15000
remove_outliers_func = remove_outliers # 假设这是你的实际异常值移除函数
plot_and_clean_data(data_sets, sample_size, remove_outliers_func, ['N1', 'N2', 'EGT', 'FF'])
```
这个函数化版本使得你可以方便地针对不同的数据集重复上述流程,只需传递相应的数据、采样大小和异常值处理设置即可。同时,它也简化了代码结构,提高了复用性和可维护性。
阅读全文