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

Seaborn JointPlot如何根据指定特征列调整散点大小?

错误原因

  • 第一次报错是因为Axes.plot()是线图绘制方法,返回的Line2D对象无s参数,s是散点图scatter()方法的专属参数
  • 第二次错位是因为你额外新建了独立画布轴对象,散点图没有绑定到jointplot的主轴g.ax_joint上,导致位置偏移

可行实现代码

直接将散点绘制到jointplot的主轴上即可,同时可以保留原有的边际直方图和线性拟合效果:

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
sns.set(style="darkgrid")

tips = sns.load_dataset("tips")
# 生成基础jointplot,保留边际分布
g = sns.jointplot("total_bill", "tip", data=tips, kind="reg",
                  xlim=(0, 60), ylim=(0, 12), color='k', height=7)

# 清空原有的默认散点
g.ax_joint.cla()

# 绘制大小随size列变化的散点,同时可以设置hue区分分组,sizes控制大小区间
sns.scatterplot(
    data=tips, x="total_bill", y="tip", 
    size="size", hue="size",
    sizes=(20, 200), ax=g.ax_joint, # 关键:指定绘制到jointplot的主轴
    legend="full"
)

# 重新绘制线性拟合线,和原reg效果保持一致
slope, intercept = np.polyfit(tips['total_bill'], tips['tip'], 1)
x_reg = np.linspace(0, 60, 100)
y_reg = slope * x_reg + intercept
g.ax_joint.plot(x_reg, y_reg, color='k', linewidth=2)

plt.show()

如果不需要hue效果只需要大小变化,也可以直接用matplotlib的scatter方法替换上方sns.scatterplot部分:

g.ax_joint.scatter(tips['total_bill'], tips['tip'], 
                   s=tips['size']*15, # 乘以15调整大小缩放比例
                   color='blue')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:54:06