seaborn.barplot#

seaborn.barplot(data=None, *, x=None, y=None, hue=None, order=None, hue_order=None, estimator='mean', errorbar=('ci', 95), n_boot=1000, seed=None, units=None, weights=None, orient=None, color=None, palette=None, saturation=0.75, fill=True, hue_norm=None, width=0.8, dodge='auto', gap=0, log_scale=None, native_scale=False, formatter=None, legend='auto', capsize=0, err_kws=None, ci=<deprecated>, errcolor=<deprecated>, errwidth=<deprecated>, ax=None, **kwargs)#

将点估计值和误差显示为矩形条形图。

条形图表示数值变量的聚合或统计估计值,每个矩形的高度代表估计值,并使用误差条表示围绕该估计值的不确定性。条形图在轴范围内包含 0,当 0 是变量取值的有效值时,条形图是一个不错的选择。

有关更多信息,请参阅教程

注意

默认情况下,此函数将一个变量视为分类变量,并在相关轴上的序数位置 (0, 1, … n) 绘制数据。从 0.13.0 版本开始,可以通过设置 native_scale=True 来禁用此功能。

参数:
dataDataFrame、Series、dict、array 或 array 列表

用于绘图的数据集。如果 xy 缺失,则将其解释为宽格式。否则,预计它是长格式。

x, y, huedata 中的变量名称或矢量数据

用于绘制长格式数据的输入。有关解释,请参阅示例。

order, hue_order字符串列表

绘制分类级别顺序,否则从数据对象推断级别。

estimator将向量映射到标量的字符串或可调用对象

用于估计每个分类箱内的统计函数。

errorbar字符串、(字符串、数字) 元组、可调用对象或 None

误差条方法的名称(“ci”、“pi”、“se” 或 “sd”),或者包含方法名称和级别参数的元组,或者将向量映射到 (min, max) 区间的函数,或者 None 以隐藏误差条。有关更多信息,请参阅误差条教程

v0.12.0 版本新增。

n_bootint

用于计算置信区间的引导样本数量。

seedint、numpy.random.Generatornumpy.random.RandomState

用于可重复引导的种子或随机数生成器。

unitsdata 中的变量名称或矢量数据

采样单元标识符;由误差条函数用于执行多级引导并考虑重复测量。

weightsdata 中的变量名称或矢量数据

用于计算加权统计量的数据值或列。请注意,使用权重可能会限制其他统计选项。

v0.13.1 版本新增。

orient“v” | “h” | “x” | “y”

绘图的方向(垂直或水平)。这通常根据输入变量的类型推断,但它可用于解决当 xy 都是数值或绘制宽格式数据时出现的歧义。

v0.13.0 版本更改: 添加了 'x'/'y' 作为选项,等效于 'v'/'h'。

colormatplotlib 颜色

绘图中元素的单一颜色。

palette调色板名称、列表或字典

用于 hue 变量的不同级别的颜色。应为 color_palette() 可解释的内容,或者将色调级别映射到 matplotlib 颜色的字典。

saturationfloat

绘制填充颜色的原始饱和度的比例。较大的色块通常使用去饱和颜色看起来更好,但如果希望颜色与输入值完全匹配,则将其设置为 1

fillbool

如果为 True,则使用实心色块。否则,绘制为线框图。

v0.13.0 版本新增。

hue_norm元组或 matplotlib.colors.Normalize 对象

hue 变量为数值时,应用于 hue 变量的颜色图的数据单位归一化。如果 hue 为分类变量,则不相关。

v0.12.0 版本新增。

widthfloat

分配给方向轴上每个元素的宽度。当 native_scale=True 时,它相对于本机尺度中两个值之间的最小距离。

dodge“auto” 或 bool

当使用色调映射时,是否应缩小元素并在方向轴上进行平移以消除重叠。如果为 "auto",则在方向变量与分类变量交叉时设置为 True,否则设置为 False

v0.13.0 版本更改: 添加了 "auto" 模式作为新的默认值。

gapfloat

沿方位轴缩小此比例因子,以在躲避元素之间添加间隙。

0.13.0 版本新增。

log_scale布尔值或数字,或布尔值或数字对

将轴刻度设置为对数。单个值设置图中任何数值轴的数据轴。一对值独立设置每个轴。数值被解释为所需的基数(默认值为 10)。当为 NoneFalse 时,seaborn 采用现有的 Axes 刻度。

v0.13.0 版本新增。

native_scale布尔值

当为 True 时,分类轴上的数值或日期时间值将保持其原始比例,而不是转换为固定索引。

v0.13.0 版本新增。

formatter可调用对象

将分类数据转换为字符串的函数。影响分组和刻度标签。

v0.13.0 版本新增。

legend“auto”、”brief”、”full” 或 False

如何绘制图例。如果为 “brief”,则数值 huesize 变量将使用均匀间隔值的样本表示。如果为 “full”,则每个组将在图例中获得一个条目。如果为 “auto”,则根据级别数量在简短表示或完整表示之间选择。如果为 False,则不会添加图例数据,也不会绘制图例。

v0.13.0 版本新增。

capsize浮点数

误差条“帽”的宽度,相对于条形间距。

err_kws字典

误差条艺术家的参数,有关 matplotlib.lines.Line2D 的详细信息,请参见。

v0.13.0 版本新增。

ci浮点数

要显示的置信区间的级别,在 [0, 100] 中。

自 v0.12.0 版本起已弃用: 使用 errorbar=("ci", ...)

errcolormatplotlib 颜色

用于误差条线的颜色。

自 0.13.0 版本起已弃用: 使用 err_kws={'color': ...}

errwidth浮点数

误差条线(和帽)的粗细,以点数计。

自 0.13.0 版本起已弃用: 使用 err_kws={'linewidth': ...}

axmatplotlib Axes

要绘制图表的 Axes 对象,否则使用当前 Axes。

kwargs键值映射

其他参数将传递给 matplotlib.patches.Rectangle

返回值:
axmatplotlib Axes

返回绘制了图表在其上的 Axes 对象。

另请参阅

countplot

显示每个分类箱中的观察次数。

pointplot

使用点显示点估计和置信区间。

catplot

将分类图与 FacetGrid 结合使用。

注释

对于 0 不是有意义值的 dataset,pointplot() 将允许您专注于一个或多个分类变量级别之间的差异。

同样重要的是要注意,条形图只显示平均值(或其他聚合值),但通常更重要的是显示每个分类变量级别上的值分布。在这些情况下,boxplot()violinplot() 等方法可能更合适。

示例

使用长数据,将 xy 分配给按分类变量分组,并绘制聚合值,以及置信区间

sns.barplot(penguins, x="island", y="body_mass_g")
../_images/barplot_1_0.png

在 v0.13.0 之前,每个条形图将具有不同的颜色。若要复制此行为,也要将分组变量分配给 hue

sns.barplot(penguins, x="body_mass_g", y="island", hue="island", legend=False)
../_images/barplot_3_0.png

绘制“宽格式”dataframe 时,将聚合每个列并将其表示为条形图

flights_wide = flights.pivot(index="year", columns="month", values="passengers")
sns.barplot(flights_wide)
../_images/barplot_5_0.png

仅传递 series(或字典)将绘制其每个值,使用索引(或键)来标记条形图

sns.barplot(flights_wide["Jun"])
../_images/barplot_7_0.png

使用长格式数据,您可以使用 hue 添加第二层分组

sns.barplot(penguins, x="island", y="body_mass_g", hue="sex")
../_images/barplot_9_0.png

使用误差条显示标准差而不是置信区间

sns.barplot(penguins, x="island", y="body_mass_g", errorbar="sd")
../_images/barplot_11_0.png

使用不同的聚合函数并禁用误差条

sns.barplot(flights, x="year", y="passengers", estimator="sum", errorbar=None)
../_images/barplot_13_0.png

使用每个条形图的值添加文本标签

ax = sns.barplot(flights, x="year", y="passengers", estimator="sum", errorbar=None)
ax.bar_label(ax.containers[0], fontsize=10);
../_images/barplot_15_0.png

保留分组变量的原始比例,并在数值坐标中添加注释

ax = sns.barplot(
    flights, x="year", y="passengers",
    native_scale=True,
    estimator="sum", errorbar=None,
)
ax.plot(1955, 3600, "*", markersize=10, color="r")
../_images/barplot_17_0.png

使用 orient 解决当两个变量都是数值时关于哪个变量应该分组的歧义

sns.barplot(flights, x="passengers", y="year", orient="y")
../_images/barplot_19_0.png

使用 matplotlib.patches.Rectanglematplotlib.lines.Line2D 关键字参数自定义图表的显示

sns.barplot(
    penguins, x="body_mass_g", y="island",
    errorbar=("pi", 50), capsize=.4,
    err_kws={"color": ".5", "linewidth": 2.5},
    linewidth=2.5, edgecolor=".5", facecolor=(0, 0, 0, 0),
)
../_images/barplot_21_0.png

使用 catplot() 绘制分面条形图,建议直接使用 FacetGrid 进行操作

sns.catplot(
    penguins, kind="bar",
    x="sex", y="body_mass_g", col="species",
    height=4, aspect=.5,
)
../_images/barplot_23_0.png