I am aware of the bbox_to_anchor keyword and this thread, which very helpfully suggests how to manually place the legend:
How to put the legend out of the plot
According to the matplotlib legend documentation:
The location can also be a 2-tuple giving the coordinates of the lower-left corner of the legend in axes coordinates (in which case bbox_to_anchor will be ignored).
Thus, one could use:
plt.legend(loc=(x, y))
to set the legend's lower left corner to the specified (x, y) position.