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()
请注意,上面的代码可能会遇到新的错误,但需要有一个最小、完整和可验证的示例。