python导入ECG的文本文件并画出各导联的波形图、数据值分布柱状图
时间: 2024-03-14 09:44:49 浏览: 305
好的,这里是一个示例代码,可以帮助你实现这个任务。我们假设你的 ECG 数据文件是以文本格式存储的,文件名为 `ecg.txt`,每行包含一个时间戳和 12 个导联的数据。
```python
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据文件
data = pd.read_csv('ecg.txt', delimiter='\t', header=None, names=['time', 'I', 'II', 'III', 'aVR', 'aVL', 'aVF', 'V1', 'V2', 'V3', 'V4', 'V5', 'V6'])
# 将时间戳转换为秒数
data['time'] = data['time'] / 1000.0
# 将每个导联的数据分别保存到一个列表中
leads = ['I', 'II', 'III', 'aVR', 'aVL', 'aVF', 'V1', 'V2', 'V3', 'V4', 'V5', 'V6']
# 绘制各导联的波形图
fig, axs = plt.subplots(nrows=6, ncols=2, figsize=(15, 15), sharex=True, sharey=True)
for i, lead in enumerate(leads):
row, col = divmod(i, 2)
axs[row, col].plot(data['time'], data[lead])
axs[row, col].set_title(lead)
plt.tight_layout()
# 绘制各导联的数据值分布柱状图
fig, axs = plt.subplots(nrows=6, ncols=2, figsize=(15, 15), sharex=True, sharey=True)
for i, lead in enumerate(leads):
row, col = divmod(i, 2)
axs[row, col].hist(data[lead], bins=100)
axs[row, col].set_title(lead)
plt.tight_layout()
plt.show()
```
这段代码首先使用 Pandas 库中的 `read_csv` 函数读取 ECG 数据文件,并将数据存储在一个数据帧中。然后,它将每个导联的数据分别保存到一个列表中。接着,它使用 Matplotlib 库绘制了各导联的波形图和数据值分布柱状图。
在绘制波形图时,我们使用 `subplots` 函数创建了一个 6x2 的子图网格,然后使用 `divmod` 函数计算出每个子图的行和列。在绘制数据值分布柱状图时,我们使用了相同的方法。
请注意,为了使多个子图共享相同的坐标轴,我们使用了 `sharex` 和 `sharey` 参数。这有助于比较不同导联之间的波形图和数据值分布柱状图。
你可以根据需要修改这段代码,并根据实际情况调整图形的大小、标题和标签。
阅读全文