在小平面网格的每个子图中绘制回归线


def global_regression(x, y, **kwargs):
    # Plot
    import matplotlib.pyplot as plt
    ax = plt.scatter(x.values, y.values)
    # Draw 'red' regression line
    x_plot = np.linspace(ax.get_xlim()[0], ax.get_xlim()[1], 100)
    m, b = np.polyfit(x.values, y.values, 1)
    plt.plot(x_plot, m * x_plot + b, color='red', alpha=0.5)
   # Draw diagonal 1:1 line
   ax.plot(ax.get_xlim(), ax.get_ylim(), ls='--', c='.3', alpha=0.5)
   # Create nice-looking grid for ease of visualization
   ax.grid(which='major', alpha=0.5)
   ax.grid(which='minor', alpha=0.15)
import seaborn as sns
import matplotlib.pyplot as plt
g = sns.FacetGrid(df, col='val')
g.map(global_regression, 'actual', 'predicted')
g.add_legend()
g.set(alpha=0.25)

在上面的代码中,我想创建一个 facetgris 并使用 global_regression 函数绘制一条回归线。但是,我收到此错误: *** AttributeError: 'PathCollection' object has no attribute 'get_xlim' ax.get_alim()[0].如何解决这个问题?我不想使用regplot

plt.scatter 返回一个PathCollection 。尽管你称它为ax但这不是一个轴,因此不能被视为轴,即它没有get_xlim属性。因此错误。

相反,随心所欲地调用散点,并通过plt.gca()获取轴。

foo = plt.scatter(x.values, y.values)
ax = plt.gca()

请注意,上面的代码可能会遇到新的错误,但需要有一个最小、完整和可验证的示例。

最新更新