使用带有黄砖的子图并丢失图例和标题时的问题

Posted

技术标签:

【中文标题】使用带有黄砖的子图并丢失图例和标题时的问题【英文标题】:Issues when using subplots with yellowbrick and losing legend and titles 【发布时间】:2019-09-09 10:29:56 【问题描述】:

将多个黄砖图表放入子图排列时遇到问题。标题和图例仅显示最后一个图表。我尝试了多种方法来编写代码,但无法让所有方法都显示图例和标题。我确信它可以直接开始工作。

这是一段代码:

f, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2,figsize=(14, 10))

viz = FeatureImportances(LinearRegression(), ax=ax1)
viz.fit(X_train, y_train)

viz = LearningCurve(LinearRegression(), scoring='r2',cv=10, ax=ax2)
viz.fit(X_train, y_train)

viz = ResidualsPlot(clf, ax=ax3)
viz.fit(X_train, y_train) 

viz = PredictionError(LinearRegression(), ax=ax4)
viz.fit(X_train, y_train) 
viz.score(X_test, y_test) 

viz.poof()

image of plots

【问题讨论】:

【参考方案1】:

@chris-mangum 很抱歉,您为此苦苦挣扎。除了show,我们还有另一种方法称为finalize 在这种情况下,finalize 比show 更好——show 调用finalize 然后显示或保存图形,从而结束该图,因此在多轴图中就像你一样,你不想打电话给 poof。

f, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2,figsize=(14, 10))

viz = FeatureImportances(LinearRegression(), ax=ax1)
viz.fit(X_train, y_train)
viz.finalize()

viz = LearningCurve(LinearRegression(), scoring='r2',cv=10, ax=ax2)
viz.fit(X_train, y_train)
viz.finalize()

viz = ResidualsPlot(clf, ax=ax3)
viz.fit(X_train, y_train) 
viz.finalize()

viz = PredictionError(LinearRegression(), ax=ax4)
viz.fit(X_train, y_train) 
viz.score(X_test, y_test) 

viz.finalize()

【讨论】:

以上是关于使用带有黄砖的子图并丢失图例和标题时的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何从子图中完全删除图并正确调整大小?

python使用matplotlib可视化使用subplots子图subplots绘制子图并为可视化的子图添加主标题(subplots main title)

Plotly:热图颜色图例我的子图

分组条形图的子图分组图例

添加独立于条形文本标签的子图编号

Python使用matplotlib函数subplot可视化多个不同颜色的折线图为指定的子图添加图例信息(legend)