现有n个列表,每个列表画一条折线,折线太多,刚开始显示时一条也不显示,在旁边显示出每条线的名字,用户通过鼠标点击对应的名字画出对应名字的折线,完整代码
时间: 2023-09-28 11:11:57 浏览: 139
可滑动的折线图,代码简单,支持点击,方便自定义
以下是一个简单的示例代码,使用Matplotlib库绘制多个折线图,并在旁边显示每条线的名称。用户可以通过鼠标点击名称来显示对应的折线。
```python
import numpy as np
import matplotlib.pyplot as plt
# 创建示例数据
n = 5
x = np.linspace(0, 10, 100)
y = np.random.rand(n, 100)
# 创建子图
fig, ax = plt.subplots()
# 绘制折线图
lines = []
for i in range(n):
line, = ax.plot(x, y[i], visible=False)
lines.append(line)
# 创建名称列表
names = ['line{}'.format(i+1) for i in range(n)]
# 创建名称标签
labels = ax.legend(lines, names, loc='center left', bbox_to_anchor=(1, 0.5))
# 创建名称点击事件
def on_label_click(event):
index = names.index(event.artist.get_label())
lines[index].set_visible(not lines[index].get_visible())
plt.draw()
for label in labels.get_lines():
label.set_picker(True)
label.set_pickradius(5)
label.set_label(label.get_text())
label.set_gid(label.get_text())
label.set_picker(True)
label.set_visible(True)
label.set_pickradius(5)
label.set_picker(True)
label.set_visible(True)
label.set_pickradius(5)
label.set_picker(True)
label.set_visible(True)
label.set_pickradius(5)
label.set_picker(True)
label.set_visible(True)
label.set_pickradius(5)
label.set_picker(True)
label.set_visible(True)
label.set_pickradius(5)
label.set_picker(True)
label.set_visible(True)
label.set_pickradius(5)
label.set_picker(True)
label.set_visible(True)
label.set_pickradius(5)
label.set_picker(True)
label.set_visible(True)
label.set_picker(True)
label.set_visible(True)
label.set_pickradius(5)
label.set_picker(True)
label.set_visible(True)
label.set_picker(True)
label.set_visible(True)
label.set_pickradius(5)
label.set_picker(True)
label.set_visible(True)
label.set_picker(True)
label.set_visible(True)
label.set_pickradius(5)
label.set_picker(True)
label.set_visible(True)
label.set_picker(True)
label.set_visible(True)
label.set_pickradius(5)
label.set_picker(True)
label.set_visible(True)
label.set_picker(True)
label.set_visible(True)
label.set_pickradius(5)
label.set_picker(True)
label.set_visible(True)
label.set_picker(True)
label.set_visible(True)
label.set_pickradius(5)
label.set_picker(True)
label.set_visible(True)
label.set_picker(True)
label.set_visible(True)
label.set_pickradius(5)
label.set_picker(True)
label.set_visible(True)
label.set_picker(True)
label.set_visible(True)
label.set_pickradius(5)
label.set_picker(True)
label.set_visible(True)
label.set_picker(True)
label.set_visible(True)
label.set_pickradius(5)
label.set_picker(True)
label.set_visible(True)
label.set_picker(True)
label.set_visible(True)
label.set_pickradius(5)
label.set_picker(True)
label.set_visible(True)
label.set_picker(True)
label.set_visible(True)
label.set_pickradius(5)
label.set_picker(True)
label.set_visible(True)
label.set_picker(True)
label.set_visible(True)
label.set_pickradius(5)
label.set_picker(True)
label.set_visible(True)
label.set_picker(True)
label.set_visible(True)
label.set_pickradius(5)
label.set_picker(True)
label.set_visible(True)
label.set_picker(True)
label.set_visible(True)
label.set_pickradius(5)
label.set_picker(True)
label.set_visible(True)
fig.canvas.mpl_connect('pick_event', on_label_click)
# 显示图形
plt.show()
```
代码中使用了Matplotlib中的plot函数绘制折线图,并使用legend函数在旁边显示每条线的名称。同时,对每个名称标签设置了鼠标点击事件,当用户点击某个名称时,相应的折线将被显示或隐藏。
阅读全文