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

Jupyter Notebook中循环拆分DataFrame绘图时重置画布的方法

解决Jupyter Notebook循环绘图重叠问题

问题根源

你的代码存在两个核心问题:

  • 切片逻辑错误:原代码data.iloc[i:i*(len(data) // 10)]无法正确分割出10行的子集,导致每次获取的数据范围不符合预期
  • 绘图未重置:Matplotlib默认在当前活跃的绘图轴上继续绘制,没有创建新画布或清除旧绘图,导致后续图表叠加之前的曲线

修正方案

以下是修复后的代码,同时解决切片错误和绘图重叠问题:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = pd.DataFrame(np.random.rand(120, 10))

# 按每10行分割数据,循环12次
for i in range(len(data) // 10):
    # 正确切片:获取第i*10到(i+1)*10行的连续数据
    split_data = data.iloc[i*10 : (i+1)*10]
    # 创建新的独立画布,避免与之前的绘图叠加
    plt.figure(figsize=(15,5))
    # 遍历子集的每行绘制曲线,用下划线避免覆盖外层循环变量i
    for _, row in split_data.iterrows():
        row.plot()
    plt.show()

关键说明

  • 使用plt.figure()在每次循环中创建新画布,确保每张图完全独立,不会出现曲线叠加
  • 修正切片表达式为i*10 : (i+1)*10,保证每次准确获取10行数据,对应10条曲线
  • 内层循环变量改用_,避免与外层循环的i冲突,防止变量覆盖导致的逻辑错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:45:35