如何使用类别轴覆盖条形图上的数据点

How to overlay data points on a barplot with a categorical axis(如何使用类别轴覆盖条形图上的数据点)

本文介绍了如何使用类别轴覆盖条形图上的数据点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

目标:我正在尝试使用Seborn在带有多个分组条形图的图表中显示单个数据点。

问题:我尝试使用条形图的猫图和单个数据点的另一个猫图来完成此操作。但是,这会生成两个数字:一个数字带有条形图,另一个带有单个数据点。

问题:是否有办法使用Seborn将单个数据点与条形图一起显示在同一图形中?

这是我的代码,生成两个独立的数字:

import seaborn as sns
tips = sns.load_dataset("tips")

g = sns.catplot(
    x="sex", 
    y="total_bill", 
    hue="smoker", 
    row="time", 
    data=tips, 
    kind="bar", 
    ci = "sd", 
    edgecolor="black",
    errcolor="black",
    errwidth=1.5,
    capsize = 0.1,
    height=4, 
    aspect=.7,
)

g = sns.catplot(
    x="sex", 
    y="total_bill", 
    hue="smoker", 
    row="time", 
    data=tips, 
    kind="strip", 
    height=4, 
    aspect=.7,
)

输出:

问题:是否有办法使用Seborn将单个数据点与条形图一起显示在同一图形中?

推荐答案

  • 图形级别绘图(seaborn.catplot)不能组合,但是可以将轴级绘图(seaborn.stripplot)映射到图形级别绘图。
    • 参见Building structured multi-plot grids
    • 这可能是一个变化无常的过程,并且可能仅在映射绘图中使用数据框中的相同列时才起作用。
  • 测试于python 3.8.11matplotlib 3.4.3seaborn 0.11.2
import seaborn as sns

tips = sns.load_dataset("tips")

g = sns.catplot(
    x="sex", 
    y="total_bill", 
    hue="smoker", 
    row="time", 
    data=tips, 
    kind="bar", 
    ci = "sd", 
    edgecolor="black",
    errcolor="black",
    errwidth=1.5,
    capsize = 0.1,
    height=4, 
    aspect=.7,
    alpha=0.5)

# map data to stripplot
g.map(sns.stripplot, 'sex', 'total_bill', 'smoker', hue_order=['Yes', 'No'], order=['Male', 'Female'],
      palette=sns.color_palette(), dodge=True, alpha=0.6, ec='k', linewidth=1)

这篇关于如何使用类别轴覆盖条形图上的数据点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:如何使用类别轴覆盖条形图上的数据点

基础教程推荐