使用seaborn,如何将垂直线添加到分布图(sns.distplot)

时间:2018-09-14 15:21:29

标签: python matplotlib plot seaborn

使用seaborn.pydata.orgPython DataScience Handbook中的示例,我可以生成带有以下代码段的组合分布图:

代码:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

# some settings
sns.set_style("darkgrid")

# Create some data
data = np.random.multivariate_normal([0, 0], [[5, 2], [2, 2]], size=2000)
data = pd.DataFrame(data, columns=['x', 'y'])

# Combined distributionplot
sns.distplot(data['x'])
sns.distplot(data['y'])

情节: enter image description here

如何将这种设置与垂直线结合起来,以便可以说明这样的阈值:

enter image description here

我知道我可以像这里Dynamic histogram subplots with line to mark target那样使用matplotlib来做到这一点,但是我真的很喜欢seaborn图的简单性,并且非常想知道是否有可能更优雅地做到这一点(是的,我知道seaborn建立在matplotlib之上。

谢谢您的任何建议!

1 个答案:

答案 0 :(得分:16)

只需使用

plt.axvline(2.8, 0,0.17)

与另一行相同

在这里,您可以使用maxx = max(data)之类的变量或类似变量来代替分布的最大值。 x轴上的位置是2.8。哦,请记住,y值必须在0到1之间,其中1是图的顶部。您可以相应地重新调整值。另一个明显的选择就是

plt.plot([2.8, 2.8], [0, max(data)])