I try to make vertical seaborn boxplot like this
import pandas as pd
df = pd.DataFrame({'a' : ['a', 'b' , 'b', 'a'], 'b' : [5, 6, 4, 3] })
import seaborn as sns
import matplotlib.pylab as plt
%matplotlib inline
sns.boxplot( x= "b",y="a",data=df )
i get
i write orient
sns.boxplot( x= "c",y="a",data=df , orient = "v")
and get
TypeError: unsupported operand type(s) for /: 'str' and 'int'
but
sns.boxplot( x= "c",y="a",data=df , orient = "h")
works coreect! what's wrong?
TypeError Traceback (most recent call last)
<ipython-input-16-5291a1613328> in <module>()
----> 1 sns.boxplot( x= "b",y="a",data=df , orient = "v")
C:\Program Files\Anaconda3\lib\site-packages\seaborn\categorical.py in boxplot(x, y, hue, data, order, hue_order, orient, color, palette, saturation, width, fliersize, linewidth, whis, notch, ax, **kwargs)
2179 kwargs.update(dict(whis=whis, notch=notch))
2180
-> 2181 plotter.plot(ax, kwargs)
2182 return ax
2183
C:\Program Files\Anaconda3\lib\site-packages\seaborn\categorical.py in plot(self, ax, boxplot_kws)
526 def plot(self, ax, boxplot_kws):
527 """Make the plot."""
--> 528 self.draw_boxplot(ax, boxplot_kws)
529 self.annotate_axes(ax)
530 if self.orient == "h":
C:\Program Files\Anaconda3\lib\site-packages\seaborn\categorical.py in draw_boxplot(self, ax, kws)
463 positions=[i],
464 widths=self.width,
--> 465 **kws)
466 color = self.colors[i]
467 self.restyle_boxplot(artist_dict, color, props)
C:\Program Files\Anaconda3\lib\site-packages\matplotlib\__init__.py in inner(ax, *args, **kwargs)
1816 warnings.warn(msg % (label_namer, func.__name__),
1817 RuntimeWarning, stacklevel=2)
-> 1818 return func(ax, *args, **kwargs)
1819 pre_doc = inner.__doc__
1820 if pre_doc is None:
C:\Program Files\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py in boxplot(self, x, notch, sym, vert, whis, positions, widths, patch_artist, bootstrap, usermedians, conf_intervals, meanline, showmeans, showcaps, showbox, showfliers, boxprops, labels, flierprops, medianprops, meanprops, capprops, whiskerprops, manage_xticks, autorange)
3172 bootstrap = rcParams['boxplot.bootstrap']
3173 bxpstats = cbook.boxplot_stats(x, whis=whis, bootstrap=bootstrap,
-> 3174 labels=labels, autorange=autorange)
3175 if notch is None:
3176 notch = rcParams['boxplot.notch']
C:\Program Files\Anaconda3\lib\site-packages\matplotlib\cbook.py in boxplot_stats(X, whis, bootstrap, labels, autorange)
2036
2037 # arithmetic mean
-> 2038 stats['mean'] = np.mean(x)
2039
2040 # medians and quartiles
C:\Program Files\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py in mean(a, axis, dtype, out, keepdims)
2883
2884 return _methods._mean(a, axis=axis, dtype=dtype,
-> 2885 out=out, keepdims=keepdims)
2886
2887
C:\Program Files\Anaconda3\lib\site-packages\numpy\core\_methods.py in _mean(a, axis, dtype, out, keepdims)
70 ret = ret.dtype.type(ret / rcount)
71 else:
---> 72 ret = ret / rcount
73
74 return ret
TypeError: unsupported operand type(s) for /: 'str' and 'int'
For seaborn's boxplots it is important to keep an eye on the x-axis and y-axis assignments, when switching between horizontal and vertical alignment:
%matplotlib inline
import pandas as pd
import seaborn as sns
df = pd.DataFrame({'a' : ['a', 'b' , 'b', 'a'], 'b' : [5, 6, 4, 3] })
# horizontal boxplots
sns.boxplot(x="b", y="a", data=df, orient='h')
# vertical boxplots
sns.boxplot(x="a", y="b", data=df, orient='v')
Mixing up the columns will cause seaborn to try to calculate the summary statistics of the boxes on categorial data, which is bound to fail.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With