FutureWarning: Pass the following variables as keyword args: x, y
Question:
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.
Answers:
Seaborn 0.12
- Some possible errors for incorrect use of positional arguments:
sns.regplot(tips.total_bill, tips.tip)
: TypeError: regplot() takes from 0 to 1 positional arguments but 2 were given.
sns.lmplot('petel_width', 'petal_length', data=iris)
: TypeError: lmplot() got multiple values for argument ‘data’
sns.kdeplot(x, y)
: TypeError: kdeplot() takes from 0 to 1 positional arguments but 2 positional arguments (and 1 keyword-only argument) were given
- Only
data
may be specified as the first positional argument for seaborn plots. All other arguments must use keywords (e.g. x=
and y=
).
Seaborn 0.11
- 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)
# 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')
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)
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.
Seaborn 0.12
- Some possible errors for incorrect use of positional arguments:
sns.regplot(tips.total_bill, tips.tip)
: TypeError: regplot() takes from 0 to 1 positional arguments but 2 were given.sns.lmplot('petel_width', 'petal_length', data=iris)
: TypeError: lmplot() got multiple values for argument ‘data’sns.kdeplot(x, y)
: TypeError: kdeplot() takes from 0 to 1 positional arguments but 2 positional arguments (and 1 keyword-only argument) were given
- Only
data
may be specified as the first positional argument for seaborn plots. All other arguments must use keywords (e.g.x=
andy=
).
Seaborn 0.11
- 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
andy
parameters forseaborn.regplot
, or any of the other seaborn plot functions with this warning. sns.regplot(x=x, y=y)
, wherex
andy
are parameters forregplot
, to which you are passingx
andy
variables.- Beginning in version 0.12, passing any positional arguments, except
data
, will result in anerror
ormisinterpretation
.- For those concerned with backward compatibility, write a script to fix existing code, or don’t update to 0.12 (once available).
x
andy
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
andb
).- This also applies to
FutureWarning: Pass the following variable as a keyword arg: x
, which can be generated by plots only requiringx
ory
, such as:sns.countplot(pen['sex'])
, but should besns.countplot(x=pen['sex'])
orsns.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)
# 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')
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)