Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

seaborn FutureWarning: Pass the following variables as keyword args: x, y

I want to plot a seaborn regplot. my code:

x=data['Healthy life expectancy']
y=data['max_dead']
sns.regplot(x,y)
plt.show()

However this gives me future warning error. How to fix this warning?

FutureWarning: Pass the following variables as keyword args: x, y. From version 0.12, the only valid 
positional argument will be 'data', and passing other arguments without an explicit keyword will 
result in an error or misinterpretation.
like image 537
cherry Avatar asked Sep 30 '20 03:09

cherry


1 Answers

  • Technically, it's a warning, not an error, and can be ignored for now, as shown in the bottom section of this answer.
  • I recommend doing as the warning says, specify the x and y parameters for seaborn.regplot, or any of the other seaborn plot functions with this warning.
  • sns.regplot(x=x, y=y), where x and y are parameters for regplot, to which you are passing x and y variables.
  • Beginning in version 0.12, passing any positional arguments, except data, will result in an error or misinterpretation.
    • For those concerned with backward compatibility, write a script to fix existing code, or don't update to 0.12 (once available).
  • x and y are used as the data variable names because that is what is used in the OP. Data can be assigned to any variable name (e.g. a and b).
  • This also applies to FutureWarning: Pass the following variable as a keyword arg: x, which can be generated by plots only requiring x or y, such as:
    • sns.countplot(pen['sex']), but should be sns.countplot(x=pen['sex']) or sns.countplot(y=pen['sex'])
import seaborn as sns
import pandas as pd

pen = sns.load_dataset('penguins')

x = pen.culmen_depth_mm  # or bill_depth_mm
y = pen.culmen_length_mm  # or bill_length_mm

# plot without specifying the x, y parameters
sns.regplot(x, y)

enter image description here

# plot with specifying the x, y parameters
sns.regplot(x=x, y=y)

# or use
sns.regplot(data=pen, x='bill_depth_mm', y='bill_length_mm')

enter image description here

Ignore the warnings

  • I do not advise using this option.
  • Once seaborn v0.12 is available, this option will not be viable.
  • From version 0.12, the only valid positional argument will be data, and passing other arguments without an explicit keyword will result in an error or misinterpretation.
import warnings
warnings.simplefilter(action="ignore", category=FutureWarning)

# plot without specifying the x, y parameters
sns.regplot(x, y)

enter image description here

like image 125
Trenton McKinney Avatar answered Nov 08 '22 12:11

Trenton McKinney