Python绘图代码陷入无限循环,如何终止循环并排查代码问题?
解决Matplotlib绘图窗口循环弹出的问题
嘿,我来帮你搞定这个Matplotlib窗口循环弹个不停的问题~先拆解下你的代码里的核心问题:
为啥会出现循环弹出的情况?
- 你写了
for column in df.columns的循环,但循环体完全没用到column变量,反而每次都硬编码绘制第2列(索引1)和第3列(索引2) - 这个循环会遍历数据框的每一列,每执行一轮循环就会弹出这两个窗口,关闭后循环继续走下一轮——直到遍历完所有列,但因为每次都画相同的内容,看起来就像无限循环停不下来
修复方案分两种场景:
场景1:你只需要绘制指定的两列
那完全不需要for循环,直接单独绘制就行,代码如下:
import pandas as pd import matplotlib.pyplot as plt file_path = ("C://Users/RichardStone/Pycharm/Project/train_data.csv") df = pd.read_csv(file_path) # 绘制第2列(索引1) plt.figure('Train data: Jitter (Local)') plt.title('Feature: Jitter (Local)') plt.plot(df.iloc[:, [1]]) plt.show() # 绘制第3列(索引2) plt.figure('Train data: Jitter (local, absolute)') plt.title('Feature: Jitter (local, absolute)') plt.plot(df.iloc[:, [2]]) plt.show()
场景2:你本来想遍历所有列逐一绘图
那就要用循环变量column来获取对应列,而不是硬编码索引,同时可以在每次绘图后关闭当前图释放资源:
import pandas as pd import matplotlib.pyplot as plt file_path = ("C://Users/RichardStone/Pycharm/Project/train_data.csv") df = pd.read_csv(file_path) for column in df.columns: plt.figure(f'Train data: {column}') plt.title(f'Feature: {column}') plt.plot(df[column]) plt.show() # 关闭当前图,避免内存占用,也能防止窗口残留问题 plt.close()
紧急终止当前循环的方法
如果现在程序还在运行,直接在终端按Ctrl+C就能强制停止哦~
内容的提问来源于stack exchange,提问作者Soulofknight
相关产品推荐
相关产品推荐

