It’s probably best to define the position in figure coordinates instead of data coordinates as you’d probably not want the text to change its position when changing the data.
Using figure coordinates can be done either by specifying the figure transform (
plt.text(0.02, 0.5, textstr, fontsize=14, transform=plt.gcf().transFigure)
or by using the
text method of the figure instead of that of the axes.
plt.gcf().text(0.02, 0.5, textstr, fontsize=14)
In both cases the coordinates to place the text are in figure coordinates, where
(0,0) is the bottom left and
(1,1) is the top right of the figure.
At the end you still may want to provide some extra space for the text to fit next to the axes, using
plt.subplots_adjust(left=0.3) or so.