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
答案 0 :(得分:1)
plt.scatter
返回PathCollection
。尽管你调用它ax
这不是一个轴,因此不能这样对待它,即它没有get_xlim
属性。因此错误。
而是随意调用散点图并通过plt.gca()
获取轴。
foo = plt.scatter(x.values, y.values)
ax = plt.gca()
请注意,您可能会使用上面的代码遇到新的错误,但是需要有一个Minimal, Complete, and Verifiable example。