python写一个代码,画三十条折线图,在旁边显示出每条线代表的名称,在图上做一个小功能,刚开始一条也不显示,让使用者通过鼠标点击旁边代表折线的名字,自行选择显示哪一条,通过点击可以多条显示。完整代码
时间: 2023-09-28 08:11:57 浏览: 129
以下是一个用Python和matplotlib库实现的示例代码,可以画出30条折线图,并实现了交互式的显示/隐藏某些折线的功能:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成30条随机折线
np.random.seed(0)
data = np.random.rand(30, 100)
# 创建图像和子图
fig, ax = plt.subplots()
# 绘制30条折线,同时记录每条折线的名称
lines = []
labels = []
for i in range(30):
line, = ax.plot(data[i], label=f'Line {i+1}')
lines.append(line)
labels.append(f'Line {i+1}')
# 创建一个字典,记录每条折线的可见性
line_visible = {line: True for line in lines}
# 创建一个交互式的控制面板
ax_legend = ax.legend(loc='upper left')
ax_buttons = plt.axes([0.01, 0.01, 0.2, 0.98])
button = plt.CheckButtons(ax_buttons, labels, [True]*30)
# 定义一个函数,用来控制每条折线的可见性
def on_checkbox_clicked(label):
index = labels.index(label)
line = lines[index]
line_visible[line] = not line_visible[line]
line.set_visible(line_visible[line])
plt.draw()
# 将函数绑定到控制面板上
button.on_clicked(on_checkbox_clicked)
# 显示图像
plt.show()
```
运行代码后,会弹出一个带有30条折线图和一个控制面板的窗口。默认情况下,所有的折线都是可见的,控制面板上的所有复选框都是被选中的。用户可以通过点击复选框来选择要显示/隐藏的折线。
注意:由于本代码使用了matplotlib库的交互式控件,因此需要在本地运行(即不能在Jupyter Notebook等在线环境中运行)。
阅读全文