You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何切换pandas DataFrame绘图中折线的可见性

实现切换折线可见性的方案

调用df.plot()时直接接收它的返回值(matplotlib的Axes对象),即可直接获取所有折线实例,顺序和DataFrame列顺序、图例顺序完全一致,不需要额外做匹配,完整实现代码如下:

import pandas as pd
import matplotlib.pyplot as plt

# 此处替换为你预处理完成的DataFrame
# df = 你的预处理结果

# 接收plot方法返回的Axes对象
ax = df.plot(figsize=(20, 8), fontsize=16)
# 直接获取所有折线对象,顺序与列、图例顺序完全对应
lines = ax.lines
# 生成图例
leg = ax.legend(fontsize=14)

# 建立图例线条与原图折线的映射关系
legend_to_line = {}
for legend_line, origin_line in zip(leg.get_lines(), lines):
    # 设置图例线条可点击,参数10为拾取的像素容忍值
    legend_line.set_picker(10)
    legend_to_line[legend_line] = origin_line

# 定义点击事件回调逻辑
def on_pick(event):
    event_line = event.artist
    if event_line not in legend_to_line:
        return
    target_line = legend_to_line[event_line]
    # 切换可见状态
    is_visible = not target_line.get_visible()
    target_line.set_visible(is_visible)
    # 同步修改图例线条透明度,区分隐藏/显示状态
    event_line.set_alpha(1.0 if is_visible else 0.2)
    plt.draw()

# 绑定点击事件到画布
plt.gcf().canvas.mpl_connect('pick_event', on_pick)
plt.show()

运行后点击图例中的对应线条,即可切换对应折线的显示/隐藏状态,隐藏的折线对应的图例项会变为半透明,方便你快速识别状态。

内容的提问来源于stack exchange,提问作者asdas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 06:09:02