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

调用sns.pairplot触发StopIteration错误及Matplotlib警告的解决求助

问题解决:sns.pairplot触发Matplotlib弃用警告与StopIteration错误

错误原因分析

1. Matplotlib弃用警告

Matplotlib 3.6之后不再推荐使用内置的"seaborn"样式,因为其样式定义和seaborn官方维护的版本不一致,官方建议直接使用seaborn的API设置样式。

2. StopIteration错误

sns.pairplot默认会对DataFrame中所有列生成两两关系图,但你的数据包含字符串类型的Name列,该列无法生成对角线的直方图,进而触发迭代器空值的StopIteration错误。

修复后的代码

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

# 替换弃用的Matplotlib seaborn样式,改用seaborn官方样式设置
sns.set_style("whitegrid")  # 可选样式:whitegrid、darkgrid、white、dark等

data = {"Name":["Thiam","Ennis-Hill","Theisen Eaton","Ikauniece-Admidina","Schafer","Johnson-Thompson","Rodriguez","Zsivoczky-Farkas","Oeser","Vetter"],
        "hurdles":[13.56,12.84,13.18,13.33,13.12,13.48,13.61,13.79,13.69,13.47],
        "highjump":[1.98,1.89,1.86,1.77,1.83,1.98,1.86,1.86,1.86,1.77],
        "shotput":[14.91,13.86,13.45,13.52,14.57,11.68,13.69,14.39,14.28,14.78],
        "run200m":[25.1,23.49,24.18,23.76,23.99,23.26,24.26,25.38,24.99,23.93],
        "longjump":[6.58,6.34,6.48,6.12,6.2,6.51,6.25,6.31,6.1,6.1],
        "javelin":[53.13,46.06,47.36,55.93,47.99,36.36,48.89,48.07,47.22,48.42],
        "run800m":[136.5,129.1,129.5,129.4,136.5,130.5,134.7,131.8,133.8,137.7]}

hept = pd.DataFrame(data)

# 方法1:自动筛选所有数值列进行pairplot
numeric_cols = hept.select_dtypes(include=['number']).columns
sns.pairplot(hept, vars=numeric_cols)

# 方法2:手动排除Name列
# sns.pairplot(hept.drop(columns=['Name']))

plt.show()  # 显式调用确保图像在VS Code中正常显示

关键修改说明

  • 移除plt.style.use("seaborn"),改用sns.set_style()设置seaborn官方样式,彻底消除弃用警告。
  • 在sns.pairplot中指定仅处理数值列(两种方法二选一),避免非数值列导致的迭代错误。
  • 添加plt.show(),确保图像在VS Code环境中正常渲染显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:50:28