为什么我的Python Seaborn lmplot代码运行时报ValueError错误?
问题原因与解决方法
报错原因
使用hue='sex'参数后,sns.lmplot()会将原始数据集按性别拆分为两个独立子组分别绘图,你传入scatter_kws的s参数是完整的tips['size']序列,长度与拆分后的单个子组数据长度不匹配,因此触发维度不符的报错。
解决方法
方案1:固定点大小
如果不需要点大小关联size字段的数值,直接把s设为固定数值即可:
import matplotlib.pyplot as plt import seaborn as sns tips = sns.load_dataset('tips') scatter = sns.lmplot( x='total_bill', y='tip', data=tips, hue='sex', fit_reg=False, markers=['o','x'], scatter_kws={"s": 50} ) plt.show()
方案2:保留点大小映射逻辑
如果需要点的大小对应size字段的数值,直接通过seaborn层面的size参数做映射,框架会自动处理分组后的维度匹配问题:
import matplotlib.pyplot as plt import seaborn as sns tips = sns.load_dataset('tips') scatter = sns.lmplot( x='total_bill', y='tip', data=tips, hue='sex', size='size', sizes=(20, 200), fit_reg=False, markers=['o','x'] ) plt.show()
注:若使用seaborn 0.12及以上版本,可将上述代码中的size参数替换为s,用法一致。
内容的提问来源于stack exchange,提问作者changsoo Lee
相关产品推荐
相关产品推荐

