如何切换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
相关产品推荐
相关产品推荐

