代码之家  ›  专栏  ›  技术社区  ›  vestland

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

  •  5
  • vestland  · 技术社区  · 6 年前

    使用 seaborn.pydata.org 以及 Python 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

    我知道我可以用matplotlib来做 Dynamic histogram subplots with line to mark target

    谢谢你的建议!

    1 回复  |  直到 4 年前
        1
  •  52
  •   Sheldore    6 年前

    只是使用

    plt.axvline(2.8, 0,0.17)
    

    另一行也一样

    这里不是0.17,你可以用一些变量,比如 maxx = max(data)

    plt.plot([2.8, 2.8], [0, max(data)])
    
        2
  •  -1
  •   Magasinus Gilbert M.    3 年前

    distplot

    对于seaborn的当前版本,问题中的代码可以重写为:

    sns.histplot(data=data, x="x", stat="density", element="step", kde=True) 
    sns.histplot(data=data, x="y", stat="density", element="step", kde=True)
    plt.axvline(2.8, 0,0.17, color="red") # color specified for better visibility