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

如何基于列值设置Seaborn散点图标记大小?解决NameError报错

解决Seaborn散点图标记大小随指定列值变化的问题

错误原因

你遇到的NameError是因为直接使用size=xy时,Python无法识别xy这个变量——你需要明确告诉它,xy是你加载的DataFrame中的对应列,而不是一个未定义的变量。

完整解决方案

先确保数据正确加载,再通过两种方式实现标记大小随列值变化:

1. 加载数据

首先用Pandas读取CSV文件:

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

# 读取学生成绩数据集
df = pd.read_csv('student-mat.csv')

2. 正确设置标记大小

有两种写法都能解决问题:

写法一:直接引用DataFrame的列

直接在size参数中指定DataFrame的目标列:

# 替换x和y为你实际要绘制的列,比如G1和G2
sns.scatterplot(data=df, x='G1', y='G2', size=df['xy'])
plt.show()
写法二:先将列赋值给变量

如果想简化代码,可以先把目标列赋值给xy变量,再传入参数:

xy = df['xy']
sns.scatterplot(data=df, x='G1', y='G2', size=xy)
plt.show()

3. 优化大小范围(可选)

如果觉得标记大小的变化不够明显,可以用sizes参数自定义大小范围,比如设置最小20,最大200:

sns.scatterplot(
    data=df,
    x='G1',
    y='G2',
    size=df['xy'],
    sizes=(20, 200),
    legend='full' # 显示完整图例
)
plt.legend(title='XY列数值') # 给图例添加标题
plt.show()

注意事项

  • 确认你的DataFrame中确实存在名为xy的列,如果列名拼写错误(比如实际是XY或其他名称),要对应修改代码中的列名。
  • 如果不需要默认的图例,可以设置legend=False关闭。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:27:01