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

Pandas迭代传递列名至plot()的s参数报错求助

解决散点图s参数赋值的AttributeError问题

嘿,我一眼就看出问题出在哪了——你在循环里访问列的方式不对,直接导致了AttributeError!

错误原因

在你的循环中,i是动态的列名变量,但你用了continuous_data.i这种点语法来访问列。Python会把这里的i当成DataFrame的固定属性名,而不是循环变量i对应的列名,自然找不到这个不存在的属性,所以抛出错误。

修正后的代码

把列访问改成方括号索引的方式continuous_data[i]就能解决核心问题,我还帮你调整了一些细节,让代码逻辑更顺畅:

import matplotlib.pyplot as plt

for i in continuous_data.columns :
    plt.figure(figsize=(12,10))
    continuous_data.plot(
        x="Lattitude", 
        y="Longtitude", 
        kind="scatter",
        alpha=0.4,
        c="Price",
        colormap="gist_rainbow",
        s=continuous_data[i],  # 这里改成方括号索引,匹配循环变量i对应的列
        colorbar=True
    )
    # 给大小维度手动加图例(可选,默认不会自动生成大小图例)
    from matplotlib.lines import Line2D
    size_samples = [Line2D([0], [0], marker='o', color='w', markerfacecolor='gray', markersize=sz) 
                    for sz in [10, 30, 50]]
    plt.legend(size_samples, ["Small", "Medium", "Large"], title=f"Size: {i}")
    plt.title(f"Scatter Plot with Size from Column: {i}")
    plt.show()

额外提示

  • 如果列中的数值太大,散点标记会变得异常夸张,可以给s参数加个缩放因子,比如s=continuous_data[i]/10,根据你的数据范围调整比例就行。
  • 如果你不需要大小图例,删掉手动创建图例的代码,保留plt.legend()也可以,但默认情况下scatter的大小不会自动生成图例,这点要注意。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:07:14