A通过以下方式在Seaborn中制作了Facetgrid的箱线图
# Import the dataset
tips = sns.load_dataset("tips")
# Plot using Facegrid, separated by smoke
plt.style.use('ggplot')
g = sns.FacetGrid(tips, col="smoker", size=5, aspect=1.5)
g.map(sns.boxplot, "sex", "total_bill", palette='viridis', order=['Male', 'Female'])
plt.show()
Run Code Online (Sandbox Code Playgroud)
我现在想在每个图中绘制不同的水平线。例如,一条水平线(坐标为(0,10))仅在左侧图中,而另一条水平线(坐标为(0,30))仅在右侧图中。
我该怎么做呢?
有没有办法将平均值和中位数添加到 Seaborn's displot?
penguins = sns.load_dataset("penguins")
g = sns.displot(
data=penguins, x='body_mass_g',
col='species',
facet_kws=dict(sharey=False, sharex=False)
)
Run Code Online (Sandbox Code Playgroud)
基于向 seaborn FacetGrid distplots 添加均值和可变性,我看到我可以定义一个FacetGrid并映射一个函数。我可以将自定义函数传递给displot吗?
尝试displot直接使用的原因是这些图开箱即用更漂亮,无需调整刻度标签大小、轴标签大小等,并且在视觉上与我制作的其他图保持一致。
def specs(x, **kwargs):
ax = sns.histplot(x=x)
ax.axvline(x.mean(), color='k', lw=2)
ax.axvline(x.median(), color='k', ls='--', lw=2)
g = sns.FacetGrid(data=penguins, col='species')
g.map(specs,'body_mass_g' )
Run Code Online (Sandbox Code Playgroud)