【问题标题】:how to make rug plot in matplotlib如何在 matplotlib 中制作地毯图
【发布时间】:2013-07-26 07:24:10
【问题描述】:

我正在用 matplotlib 制作一个密度图,我也想在它下面获得地毯图。制作密度图的好例子在这里How to create a density plot in matplotlib?

但我找不到任何关于地毯情节的好例子。在 R 中,它可以通过 rug(data) 轻松完成。

【问题讨论】:

    标签: python matplotlib plot


    【解决方案1】:

    您可以在每个数据点绘制标记。

    from scipy import stats
    import numpy as np
    import matplotlib.pyplot as plt
    
    sample = np.hstack((np.random.randn(30), np.random.randn(20)+5))
    density = stats.kde.gaussian_kde(sample)
    
    fig, ax = plt.subplots(figsize=(8,4))
    
    x = np.arange(-6,12,0.1)
    ax.plot(x, density(x))
    
    ax.plot(sample, [0.01]*len(sample), '|', color='k')
    

    【讨论】:

    • [0.01]*len(sample) 可能比 np.full_like(sample, 0.01) 更快(使用 strides 技巧可能更快)。
    • 这似乎是迄今为止最好的纯 mpl 答案,但我怎样才能使标记('|')的底部与轴的底部对齐?
    【解决方案2】:

    你可以找到一个例子here

    ax = fig.add_subplot(111)
    
    ax.plot(x1, np.zeros(x1.shape), 'b+', ms=20)  # rug plot
    x_eval = np.linspace(-10, 10, num=200)
    ax.plot(x_eval, kde1(x_eval), 'k-', label="Scott's Rule")
    ax.plot(x_eval, kde1(x_eval), 'r-', label="Silverman's Rule")
    

    似乎是它的核心!

    【讨论】:

    • np.zeros(x1.shape) 在此处作为标准 np.zeros_like(x1) 更直接。
    【解决方案3】:

    您也可以使用Seaborn.distplot,它完全包含直方图、KDE ​​和地毯。 Seaborn 制作的人偶默认也更漂亮。

    import numpy as np
    import matplotlib.pyplot as plt
    import seaborn as sns
    sample = np.hstack((np.random.randn(30), np.random.randn(20)+5))
    fig, ax = plt.subplots(figsize=(8,4))
    sns.distplot(sample, rug=True, hist=False, rug_kws={"color": "g"},
        kde_kws={"color": "k", "lw": 3})
    plt.show()
    

    【讨论】:

    【解决方案4】:

    对于那些只想在 ma​​tplotlib 轴上使用 rugplot 的人来说,这是答案:您可以使用 seaborn 函数。

    import seaborn as sns
    sns.rugplot(xdata, height=0.025, axis=ax,  color='k')
    

    这看起来比纯 matplotlib kludge 好得多,因为地毯与 x 轴对齐(齐平)。

    【讨论】:

      猜你喜欢
      • 2012-08-22
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      • 2012-04-19
      • 2010-12-31
      • 2018-01-03
      • 1970-01-01
      相关资源
      最近更新 更多