我试图像这样制作垂直的seaborn boxplot
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 )
我得到
我写东方
sns.boxplot( x= "c",y="a",data=df , orient = "v")
并得到
TypeError: unsupported operand type(s) for /: 'str' and 'int'
但
sns.boxplot( x= "c",y="a",data=df , orient = "h")
作品coreect!怎么了?
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'
对于Seaborn的箱形图,在水平和垂直对齐方式之间切换时,请务必注意x轴和y轴的分配:
%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')
混淆列会导致seaborn尝试计算分类数据框中的摘要统计信息,这肯定会失败。