写出PYthon代码 1.读取CSV文件Output 2.把标题行分为4类,第一类是标题为ABC,DFG,TBC,DHHG,lop,kki的6列,第二类是CAT开头的几列,第三类是DOG开头的几列,第四类是Fish和food开头的几列 3.在一张画布从上到下分成4份,把4类标题画成4个曲线图,颜色随机,刻度比例适当 4.查看4个图的时候,可以使用筛选器,可以让我选择每次看哪个图
时间: 2024-03-07 15:48:14 浏览: 55
以下是Python代码,实现读取CSV文件、分类处理、绘制曲线图、添加筛选器的功能:
```python
import pandas as pd
import matplotlib.pyplot as plt
import random
# 读取CSV文件
df = pd.read_csv("data.csv")
# 分类处理
abc_cols = ["ABC", "DFG", "TBC", "DHHG", "lop", "kki"]
cat_cols = [col for col in df.columns if col.startswith("CAT")]
dog_cols = [col for col in df.columns if col.startswith("DOG")]
fish_cols = [col for col in df.columns if col.startswith("Fish")]
food_cols = [col for col in df.columns if col.startswith("food")]
# 绘制曲线图
fig, axs = plt.subplots(4, 1, figsize=(8, 8), sharex=True)
colors = ['r', 'g', 'b', 'y', 'm', 'c'] # 随机颜色
axs[0].set_title("ABC Titles")
for col, color in zip(abc_cols, colors):
axs[0].plot(df[col], color=color)
axs[1].set_title("CAT Titles")
for col, color in zip(cat_cols, colors):
axs[1].plot(df[col], color=color)
axs[2].set_title("DOG Titles")
for col, color in zip(dog_cols, colors):
axs[2].plot(df[col], color=color)
axs[3].set_title("Fish and Food Titles")
for col, color in zip(fish_cols+food_cols, colors):
axs[3].plot(df[col], color=color)
# 添加筛选器
options = ["ABC Titles", "CAT Titles", "DOG Titles", "Fish and Food Titles"]
axcolor = 'lightgoldenrodyellow'
rax = plt.axes([0.91, 0.5, 0.08, 0.15], facecolor=axcolor)
radio = plt.radioButtons(rax, options)
# 点击筛选器时更新图形
def update(label):
for i, title in enumerate(options):
if label == title:
axs[i].set_visible(True)
else:
axs[i].set_visible(False)
radio.on_clicked(update)
plt.show()
```
说明:
- `pd.read_csv("data.csv")` 用于读取名为 "data.csv" 的CSV文件。
- `abc_cols`、`cat_cols`、`dog_cols`、`fish_cols`、`food_cols` 分别用于存储不同类别的列名。
- `plt.subplots(4, 1, figsize=(8, 8), sharex=True)` 用于创建一个4行1列的画布,并且共享x轴刻度。
- `colors` 存储随机颜色。
- `axs[0].set_title("ABC Titles")` 用于设置第一个子图的标题。
- `for col, color in zip(abc_cols, colors): axs[0].plot(df[col], color=color)` 用于绘制第一个子图的曲线图。
- `options` 存储筛选器的选项。
- `rax = plt.axes([0.91, 0.5, 0.08, 0.15], facecolor=axcolor)` 用于创建筛选器的位置和颜色。
- `plt.radioButtons(rax, options)` 用于创建筛选器并返回一个 `RadioButtons` 对象。
- `radio.on_clicked(update)` 用于设置筛选器的回调函数,即每次点击筛选器时都会调用 `update` 函数。
- `update` 函数根据选中的标签名来更新子图的可见性。
阅读全文