【问题标题】:How can I plot identity lines on a seaborn pairplot?如何在 seaborn pairplot 上绘制身份线?
【发布时间】:2018-01-05 22:13:17
【问题描述】:

我正在使用 Seaborn 的配对图:

g = sns.pairplot(df)

是否可以在每个散点图上绘制标识线?

【问题讨论】:

    标签: python seaborn


    【解决方案1】:

    定义一个函数,该函数将在当前轴上绘制标识线,并使用PairGrid.map_offdiag() 方法将其应用于网格的非对角轴。

    例如:

    import seaborn as sns
    import numpy as np
    import matplotlib.pyplot as plt
    
    def plot_unity(xdata, ydata, **kwargs):
        mn = min(xdata.min(), ydata.min())
        mx = max(xdata.max(), ydata.max())
        points = np.linspace(mn, mx, 100)
        plt.gca().plot(points, points, color='k', marker=None,
                linestyle='--', linewidth=1.0)
    
    ds = sns.load_dataset('iris')
    grid = sns.pairplot(ds)
    grid.map_offdiag(plot_unity)
    

    这使我的设置如下图。您可以调整 plot_unity 函数的 kwargs 以根据需要设置绘图样式。

    【讨论】:

    • 看起来这会将所有子图放在同一范围内 (i.stack.imgur.com/qpdNF.png)。这可以调整为使用每个子图的绘图范围吗?
    • 当然,不要让mnmx 依赖于x 和y 数据,只需通过mn = min(plt.gca().axis())mx = max(plt.gca().axis()) 来计算它们。这将创建一条从每个轴范围的最小值到最大值的线。
    • 即使仍然没有这样做:i.stack.imgur.com/UEeVw.png
    • 您必须使用该功能才能获得所需的行。您可以访问数据和轴,因此请使用您想要的任何限制并根据需要修改轴。
    • 我也遇到了同样的问题,你解决了吗?我想在不改变子图中比例的情况下绘制标识线
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 2023-03-08
    • 2016-10-15
    • 2021-11-02
    • 2020-06-24
    • 1970-01-01
    相关资源
    最近更新 更多