Python Seaborn使用displot报错:Rectangle.set()获意外参数'hist'
解决Seaborn中AttributeError: Rectangle.set() got an unexpected keyword argument 'hist'的问题
报错原因
你使用的seaborn.displot()是Seaborn新版的Figure级绘图函数,它没有hist这个参数。这个参数属于旧版的distplot()函数,直接将旧版参数用到新版函数上就会触发该错误。
解决方法
你需要根据需求选择合适的参数来实现“无柱状条的转换直方图”(即只显示核密度估计曲线),以下是两种可行方案:
方案1:用displot()指定kind='kde'
直接告诉displot()绘制核密度估计曲线,这是新版Seaborn的标准用法:
import seaborn as sns import matplotlib.pyplot as plt sns.displot(df["sex"], kind='kde') plt.show()
方案2:使用axes级的kdeplot()函数
如果你不需要displot()的Figure级布局功能,也可以直接用专门的核密度绘图函数:
import seaborn as sns import matplotlib.pyplot as plt sns.kdeplot(df["sex"]) plt.show()
补充说明
Seaborn在更新后,distplot()已被标记为过时,官方推荐使用displot()作为统一的Figure级绘图入口,但两者的参数体系差异较大。如果需要基于直方图做转换但不显示柱子,也可以在displot(kind='hist')中通过stat='density'将直方图转换为密度分布,再用element='poly'隐藏柱状条(不过这种场景更推荐直接用KDE曲线):
sns.displot(df["sex"], kind='hist', stat='density', element='poly', fill=False) plt.show()
内容的提问来源于stack exchange,提问作者Aditya Narayan Verma
相关产品推荐
相关产品推荐

