Seaborn lineplot报错TypeError:参数问题排查及正确绘制方法
错误原因与修复方案
错误原因
Seaborn版本更新后,sns.lineplot()的参数规则发生变化:不再支持直接传入两个位置参数作为x、y数据,必须通过关键字参数x和y指定;另外,绘制水平线其实更适合用Matplotlib原生的plt.axhline(),而非Seaborn的lineplot(后者更适合展示数据间的关联趋势)。
修复方案
方案1:用plt.axhline()绘制绿色水平线(推荐)
这是最简洁的方式,直接指定y轴位置和样式:
fig = plt.figure(figsize = (12,6)) plt.scatter((y - y_pred), y_pred , color = 'red') plt.axhline(y=0, color='r', linestyle=':') # 绘制y=25的绿色水平线,x范围自动匹配当前轴的xlim plt.axhline(y=25, color='g') plt.ylim(0,50) plt.xlim(-4,6) plt.ylabel("Predictions") plt.xlabel("Residual") plt.title('Homoscedasticity Check') plt.show()
方案2:修正lineplot()的参数写法
如果一定要用Seaborn的lineplot,需明确传入x和y关键字参数:
fig = plt.figure(figsize = (12,6)) plt.scatter((y - y_pred), y_pred , color = 'red') plt.axhline(y=0, color='r', linestyle=':') plt.ylim(0,50) plt.xlim(-4,6) # 用关键字参数指定x和y数据 p = sns.lineplot(x=[-4,6], y=[25,25], color='g') plt.ylabel("Predictions") plt.xlabel("Residual") plt.title('Homoscedasticity Check') plt.show()
内容的提问来源于stack exchange,提问作者Dinesh
相关产品推荐
相关产品推荐

