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 不需要手动配置。
我有以下代码:
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 不需要手动配置。