Matplotlib bbox_to_anchor包含子图

时间:2015-06-15 15:45:10

标签: python matplotlib

我有以下问题: 我试图在图中使用子图和两列绘制一些数据,因为否则它会进入图中,我看不到数据。

您可以在此处查看[或多或少]代码:

for i in range(no_of_cust_clusters):
    ax[i] = plt.subplot(gs[i],)
    df[i].plot(ax=ax[i])
    ax[i].legend(bbox_to_anchor=(0, 0, 1, 1),
       bbox_transform=plt.gcf().transFigure,ncol=2)

我也尝试过:

bbox_to_anchor=(0, 0, 1, i/no_of_cust_clusters)
bbox_to_anchor=(0, 0, 1, i)
  

另请注意,gs是gridspec,以便自定义位置。

虽然,当我在绘制数据时,所有的图例都会出现在图的右上角(因为我已经说过我有一个带有多个子图的图,由gridspec指定)。我怎么解决这个问题? 谢谢!

2 个答案:

答案 0 :(得分:2)

尝试将变换设置为当前轴,以将图例放在不同的子图

bbox_transform=ax[i].transAxes

答案 1 :(得分:1)

在for循环结束时解决了这个问题!

plt.legend(bbox_to_anchor=(-0.02, 1),ncol=3,bbox_transform=ax[i].transAxes)

-0.02用于“开箱即用(X)”,1用于从上方开始(Y)

谢谢汤姆!