用openpyxl拿到左侧的数据,然后画出右侧相同的图表,包括坐标系、颜色等等
时间: 2024-11-20 12:42:06 浏览: 19
要使用 `openpyxl` 获取左侧的数据并使用 `matplotlib` 绘制右侧的图表,可以按照以下步骤进行:
1. **安装必要的库**:
```bash
pip install openpyxl matplotlib
```
2. **读取 Excel 数据**:
假设数据存储在一个名为 `data.xlsx` 的 Excel 文件中,并且数据在第一个工作表中。
3. **绘制图表**:
使用 `matplotlib` 绘制图表,包括坐标系和颜色等细节。
以下是完整的代码示例:
```python
import openpyxl
import matplotlib.pyplot as plt
# 读取 Excel 文件
workbook = openpyxl.load_workbook('data.xlsx')
sheet = workbook.active
# 提取数据
focus_positions = []
t_lu = []
s_ld = []
s_ru = []
t_rd = []
s_avg = []
t_avg = []
st_avg = []
for row in sheet.iter_rows(min_row=2, values_only=True):
focus_positions.append(row[0])
t_lu.append(row[1])
s_ld.append(row[2])
s_ru.append(row[3])
t_rd.append(row[4])
s_avg.append(row[5])
t_avg.append(row[6])
st_avg.append(row[7])
# 创建图形
fig, ax = plt.subplots()
# 绘制曲线
ax.plot(focus_positions, t_lu, label='T_LU', color='blue')
ax.plot(focus_positions, s_ld, label='S_LD', color='green')
ax.plot(focus_positions, s_ru, label='S_RU', color='red')
ax.plot(focus_positions, t_rd, label='T_RD', color='purple')
ax.plot(focus_positions, s_avg, label='S_avg', color='orange')
ax.plot(focus_positions, t_avg, label='T_avg', color='cyan')
ax.plot(focus_positions, st_avg, label='(S+T)_avg', color='magenta')
# 设置标题和标签
ax.set_title('MTF vs Focus')
ax.set_xlabel('Focus Position')
ax.set_ylabel('MTF')
# 添加图例
ax.legend()
# 显示网格
ax.grid(True)
# 显示图表
plt.show()
```
### 解释
1. **读取 Excel 文件**:使用 `openpyxl` 库加载 Excel 文件并获取活动工作表。
2. **提取数据**:遍历工作表中的每一行,将数据分别存储到不同的列表中。
3. **创建图形**:使用 `matplotlib` 创建一个图形对象和轴对象。
4. **绘制曲线**:使用 `plot` 方法绘制每条曲线,并设置相应的颜色。
5. **设置标题和标签**:设置图表的标题和坐标轴标签。
6. **添加图例**:使用 `legend` 方法添加图例。
7. **显示网格**:使用 `grid` 方法显示网格。
8. **显示图表**:使用 `show` 方法显示图表。
这样,你就可以从 Excel 文件中读取数据并绘制与右侧图表相同的效果。如果有任何特定的颜色或样式需求,可以在 `plot` 方法中进行调整。
阅读全文