Python Seaborn:分组箱线图

Python Seaborn: Grouped box plot

我有以下代码:

import seaborn as sns
import pandas as pd
import os
sns.set_theme(style="whitegrid")
df = pd.read_csv("C:/tmp/all.csv")  
sns.boxplot(x="cluster", y="val",
            hue="type", palette=["m", "g"],
            data=df)
sns.despine(offset=10, trim=True)

我的 CSV 是:

index, cluster, type, val
1, 0-10, male, 1
2, 30-40, female, 5
3, 30-40, male, 3
4, 50-60, male, 7
5, 50-60, female, 1
...

val 的最大值为 10。

我的输出是:

但我想要的是:o 以分组方式绘制值的箱线图。在我的输出中,我得到了每个集群的计数。最大 val 实际上是 10。我做错了什么?

似乎有明显的异常值超出了您描述的上限 10。这可以在图中以及在评论中提交的 table 中直观地看到。

限制 y 范围 - 快速而肮脏的方法 #1
像这样手动设置限制 y:

import matplotlib.pyplot as plt
plt.ylim([-1,11])  

在您的代码中:

import matplotlib.pyplot as plt # <--- import here
import seaborn as sns
import pandas as pd
import os
sns.set_theme(style="whitegrid")
df = pd.read_csv("C:/tmp/all.csv")  
sns.boxplot(x="cluster", y="val",
            hue="type", palette=["m", "g"],
            data=df)
sns.despine(offset=10, trim=True)
plt.ylim([-1,11]) # <--- limit y here

不显示异常值 - 快速而肮脏的方法 #2
更改 sns.boxplot()

的设置
sns.boxplot(showfliers = False)  

这两种方法都会将图表集中在四分位数信息上。我更喜欢方法 #1,因为它不会删除异常值,但 #2 不需要手动配置。