I am playing with the Titanic dataset, and trying to produce a pair plot of numeric variables against categorical variables. I can use Seaborn's catplot
to graph a plot of one numeric variable against one categorical variable:
import seaborn as snssns.catplot(data=train, x='Fare', y='Sex')
However, if I try to use PairGrid to graph numeric variables against categorical variables:
x_vars = ['Fare']
y_vars = ['Sex']g = sns.PairGrid(train, x_vars=x_vars, y_vars=y_vars)
g.map(sns.catplot)
It fails with an error:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-75-c284a7cfd727> in <module>9 #g.map_diag(lambda x, **kwargs: sns.catplot(x, x, **kwargs), jitter=True, kind="bar")10 #g.map(sns.scatterplot, y_jitter=1)#, hue=train["Survived"])
---> 11 g.map(sns.catplot)#, hue=train["Survived"])~/MLProject/book1/lib/python3.8/site-packages/seaborn/axisgrid.py in map(self, func, **kwargs)1363 row_indices, col_indices = np.indices(self.axes.shape)1364 indices = zip(row_indices.flat, col_indices.flat)
-> 1365 self._map_bivariate(func, indices, **kwargs)1366 return self1367 ~/MLProject/book1/lib/python3.8/site-packages/seaborn/axisgrid.py in _map_bivariate(self, func, indices, **kwargs)1504 y_var = self.y_vars[i]1505 ax = self.axes[i, j]
-> 1506 self._plot_bivariate(x_var, y_var, ax, func, kw_color, **kws)1507 self._add_axis_labels()1508 ~/MLProject/book1/lib/python3.8/site-packages/seaborn/axisgrid.py in _plot_bivariate(self, x_var, y_var, ax, func, kw_color, **kwargs)1534 color = self.palette[k] if kw_color is None else kw_color1535
-> 1536 func(x, y, label=label_k, color=color, **kwargs)1537 1538 self._clean_axis(ax)~/MLProject/book1/lib/python3.8/site-packages/seaborn/categorical.py in catplot(x, y, hue, data, row, col, col_wrap, estimator, ci, n_boot, units, seed, order, hue_order, row_order, col_order, kind, height, aspect, orient, color, palette, legend, legend_out, sharex, sharey, margin_titles, facet_kws, **kwargs)3760 3761 # Initialize the facets
-> 3762 g = FacetGrid(**facet_kws)3763 3764 # Draw the plot onto the facets~/MLProject/book1/lib/python3.8/site-packages/seaborn/axisgrid.py in __init__(self, data, row, col, hue, col_wrap, sharex, sharey, height, aspect, palette, row_order, col_order, hue_order, hue_kws, dropna, legend_out, despine, margin_titles, xlim, ylim, subplot_kws, gridspec_kws, size)268 # Make a boolean mask that is True anywhere there is an NA269 # value in one of the faceting variables, but only if dropna is True
--> 270 none_na = np.zeros(len(data), np.bool)271 if dropna:272 row_na = none_na if row is None else data[row].isnull()TypeError: object of type 'NoneType' has no len()
If I replace g.map(sns.catplot)
with g.map(sns.scatterplot)
it does graph successfully without error.
How can I combine catplot
with PairGrid
?