如何在seaborn的KDE图中找到中位数?
在数据分析中,我们经常使用Kernel Density Estimation(KDE)图来展示数据分布情况,同时也需要找到中位数来了解数据的集中趋势。但是,seaborn中并没有直接计算和显示中位数的参数。那么,如何在seaborn的KDE图中找到中位数呢?本文将介绍两种方法。
阅读更多:Python 教程
方法一:使用numpy计算中位数并标记在KDE图上
首先,我们需要用seaborn绘制KDE图。
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
sns.set(style="white", palette="muted", color_codes=True)
rs = np.random.RandomState(10)
x = rs.randn(100)
sns.kdeplot(x, shade=True)
plt.show()
现在我们已经有了一幅KDE图,下面就可以计算中位数并将其标记在图上。
sns.set(style="white", palette="muted", color_codes=True)
rs = np.random.RandomState(10)
x = rs.randn(100)
sns.kdeplot(x, shade=True)
median = np.median(x)
plt.axvline(median, color='r', linestyle='--', label=f'median: {median:.2f}')
plt.legend()
plt.show()
上述代码将中位数标记在图上,并在右上角添加了图例。
方法二:使用DensityPlot库
DensityPlot库是一个用于绘制平滑密度图的Python库,它基于matplotlib和seaborn,提供了一个方便的函数以绘制用于发现分布的覆盖密度图,并提供了多种方法来定制化这些图形。
首先,我们需要安装DensityPlot库。
pip install DensityPlot
接下来,我们绘制用于演示的KDE图。
import numpy as np
np.random.seed(10)
x = np.random.randn(1000)
import seaborn as sns
sns.set(style="white", palette="muted", color_codes=True)
sns.kdeplot(x, shade=True)
现在我们可以使用DensityPlot库的annotate
函数来标记中位数。
from dpt import annotate
median = np.median(x)
annotate.p2c(median, 0, s=f'median:{median:.2f}')
上述代码将在KDE图上标记中位数,并在右上角添加标注。
结论
本文介绍了两种在seaborn的KDE图中找到中位数的方法,一种是使用numpy计算中位数并标记在KDE图上,另一种则是使用DensityPlot库进行标注。这些方法可以帮助我们更好地了解和可视化数据分布趋势。