# seaborn.barplot ```py seaborn.barplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, estimator=, ci=95, n_boot=1000, units=None, orient=None, color=None, palette=None, saturation=0.75, errcolor='.26', errwidth=None, capsize=None, dodge=True, ax=None, **kwargs) ``` 条形图以矩形条的方式展示数据的点估值和置信区间 条形图用每个矩形的高度来表示数值变量的集中趋势的估计值,并提供误差条来显示估计值得不确定度。条形图的纵轴是从零开始的,这对于0值是有意义的情况是非常好的。 对于数据集中的0值没有实际意义的情况,散点图可以让您专注于一个或多个分类变量之间的差异。 要注意的是,条形图只显示平均值(或者其他的估计值),但是在大部分情况下,展示数值在不同分类变量上的分布会更有用。如果要表示出数据的分布,用箱型图或者小提琴图会更恰当。 输入数据的格式可以不同,包括: * 以列表,numpy array或者pandas中的Series object 表示的向量。这些向量可以直接传入 `x`, `y`, 以及 `hue` 参数。 * 长表, x值,y值和色相变量决定了数据是如何绘制的。 * 宽表,每个列的数值都会被绘制出来. * 数组或者列表的向量。 大多数情况下,您可以使用numpy的对象或者python的对象,但是用pandas对象更好,因为相关的but pandas objects are preferable because the associated names will be used to annotate the axes. 另外,为了控制绘图元素 您也可以可以用分类类型来组合不同的变量。 这个函数始终把一个变量当做分类变量,即使这个数据是数值类型或者日期类型,并且按照序数顺序绘制在相关的轴上。 详情请看[教程](../tutorial/categorical.html#categorical-tutorial)。 | Parameters: | **x, y, hue** : names of variables in `data` or vector data, optional > 用于绘制long-form数据的变量名称. **data** : DataFrame, array, or list of arrays, optional > 用于绘图的数据集。如果缺失X值和Y值, 这个数据集会被解释成wide-form,否则this is interpreted as wide-form. Otherwise it is expected to be long-form. **order, hue_order** : lists of strings, optional > Order to plot the categorical levels in, otherwise the levels are inferred from the data objects. **estimator** : callable that maps vector -> scalar, optional > Statistical function to estimate within each categorical bin. **ci** : float or “sd” or None, optional > Size of confidence intervals to draw around estimated values. If “sd”, skip bootstrapping and draw the standard deviation of the observations. If `None`, no bootstrapping will be performed, and error bars will not be drawn. **n_boot** : int, optional > 计算置信区间需要的Boostrap迭代次数。 **units** : name of variable in `data` or vector data, optional > Identifier of sampling units, which will be used to perform a multilevel bootstrap and account for repeated measures design. **orient** : “v” | “h”, optional > Orientation of the plot (vertical or horizontal). This is usually inferred from the dtype of the input variables, but can be used to specify when the “categorical” variable is a numeric or when plotting wide-form data. **color** : matplotlib color, optional > 作用于所有元素的颜色,或者渐变色的种子。 **palette** : palette name, list, or dict, optional > Colors to use for the different levels of the `hue` variable. Should be something that can be interpreted by [`color_palette()`](seaborn.color_palette.html#seaborn.color_palette "seaborn.color_palette"), or a dictionary mapping hue levels to matplotlib colors. **saturation** : float, optional > Proportion of the original saturation to draw colors at. Large patches often look better with slightly desaturated colors, but set this to `1` if you want the plot colors to perfectly match the input color spec. **errcolor** : matplotlib color > Color for the lines that represent the confidence interval. **errwidth** : float, optional > 错误条的线的厚度。 **capsize** : float, optional > Width of the “caps” on error bars. **dodge** : bool, optional > When hue nesting is used, whether elements should be shifted along the categorical axis. **ax** : matplotlib Axes, optional > 指定一个Axes用于绘图,如果不指定,则使用当前的Axes。 **kwargs** : key, value mappings > Other keyword arguments are passed through to `plt.bar` at draw time. | | --- | --- | | Returns: | **ax** : matplotlib Axes > Returns the Axes object with the plot drawn onto it. | | --- | --- | See also Show the counts of observations in each categorical bin.Show point estimates and confidence intervals using scatterplot glyphs.Combine a categorical plot with a class:FacetGrid. Examples Draw a set of vertical bar plots grouped by a categorical variable: ```py >>> import seaborn as sns >>> sns.set(style="whitegrid") >>> tips = sns.load_dataset("tips") >>> ax = sns.barplot(x="day", y="total_bill", data=tips) ``` ![http://seaborn.pydata.org/_images/seaborn-barplot-1.png](img/9d1addc98b6a35ef0376219c56e7b7fd.jpg) Draw a set of vertical bars with nested grouping by a two variables: ```py >>> ax = sns.barplot(x="day", y="total_bill", hue="sex", data=tips) ``` ![http://seaborn.pydata.org/_images/seaborn-barplot-2.png](img/863249efe2403afa4fae2f2b6884d3bd.jpg) 绘制一组水平柱状图: ```py >>> ax = sns.barplot(x="tip", y="day", data=tips) ``` ![http://seaborn.pydata.org/_images/seaborn-barplot-3.png](img/c3ea6265eaff0a4bfaec2966088cb66f.jpg) 通过传入一个显式的顺序来控制条柱的顺序: ```py >>> ax = sns.barplot(x="time", y="tip", data=tips, ... order=["Dinner", "Lunch"]) ``` ![http://seaborn.pydata.org/_images/seaborn-barplot-4.png](img/9233554272a5e436f6ab85c97a65010c.jpg) 用中值来评估数据的集中趋势: ```py >>> from numpy import median >>> ax = sns.barplot(x="day", y="tip", data=tips, estimator=median) ``` ![http://seaborn.pydata.org/_images/seaborn-barplot-5.png](img/2622373fb99932aa42e45c3b151135be.jpg) Show the standard error of the mean with the error bars: ```py >>> ax = sns.barplot(x="day", y="tip", data=tips, ci=68) ``` ![http://seaborn.pydata.org/_images/seaborn-barplot-6.png](img/d1310bd7e87a8549d1f0b3a1479fc06d.jpg) 展示数据的标准差: ```py >>> ax = sns.barplot(x="day", y="tip", data=tips, ci="sd") ``` ![http://seaborn.pydata.org/_images/seaborn-barplot-7.png](img/eeb77dac6d8f76d9f715476ce03773c5.jpg) Add “caps” to the error bars: ```py >>> ax = sns.barplot(x="day", y="tip", data=tips, capsize=.2) ``` ![http://seaborn.pydata.org/_images/seaborn-barplot-8.png](img/5a69e1058d9b8b4b5be6dc15d1bad130.jpg) 使用一个不同的调色盘来绘制图案: ```py >>> ax = sns.barplot("size", y="total_bill", data=tips, ... palette="Blues_d") ``` ![http://seaborn.pydata.org/_images/seaborn-barplot-9.png](img/ef011fca38d3c55dde21ee8363e93e61.jpg) 在不改变条柱的位置或者宽度的前提下,使用 `hue` : ```py >>> tips["weekend"] = tips["day"].isin(["Sat", "Sun"]) >>> ax = sns.barplot(x="day", y="total_bill", hue="weekend", ... data=tips, dodge=False) ``` ![http://seaborn.pydata.org/_images/seaborn-barplot-10.png](img/d38d4ad12b16322a5ed00690bcbcd8b6.jpg) 用同一种颜色绘制所有条柱: ```py >>> ax = sns.barplot("size", y="total_bill", data=tips, ... color="salmon", saturation=.5) ``` ![http://seaborn.pydata.org/_images/seaborn-barplot-11.png](img/4922c693b75b7656b2f16f8fd2dd6509.jpg) 用 `plt.bar` 关键字参数进一步改变图表的样式: ```py >>> ax = sns.barplot("day", "total_bill", data=tips, ... linewidth=2.5, facecolor=(1, 1, 1, 0), ... errcolor=".2", edgecolor=".2") ``` ![http://seaborn.pydata.org/_images/seaborn-barplot-12.png](img/20114eb58ca40a3ccf0b20f14f426c83.jpg) Use [`catplot()`](seaborn.catplot.html#seaborn.catplot "seaborn.catplot") to combine a [`barplot()`](#seaborn.barplot "seaborn.barplot") and a [`FacetGrid`](seaborn.FacetGrid.html#seaborn.FacetGrid "seaborn.FacetGrid"). This allows grouping within additional categorical variables. Using [`catplot()`](seaborn.catplot.html#seaborn.catplot "seaborn.catplot") is safer than using [`FacetGrid`](seaborn.FacetGrid.html#seaborn.FacetGrid "seaborn.FacetGrid") directly, as it ensures synchronization of variable order across facets: ```py >>> g = sns.catplot(x="sex", y="total_bill", ... hue="smoker", col="time", ... data=tips, kind="bar", ... height=4, aspect=.7); ``` ![http://seaborn.pydata.org/_images/seaborn-barplot-13.png](img/a2d8b9c6867b1006b56e5508d5472c86.jpg)