Convertir unidades de datos matplotlib a unidades normalizadas

¿Alguien sabe cómo convertir unidades de datos matplotlib en unidades normalizadas?

La razón por la que lo necesito es que necesito crear una ttwig secundaria sobre otra plot. Y la syntax por defecto:

plt.axes([0.1,0.1,0.3,0.3]) 

Requiere coordenadas normalizadas, pero quiero usar las coordenadas de datos:

Por ejemplo este código:

  plt.plot([0,2],[2,4]); plt.axes([0.3,.3,0.4,.4]) 

produce esto:

introduzca la descripción de la imagen aquí Pero me gustaría poder definir la ubicación de la ttwig secundaria utilizando las coordenadas de datos de la misma, algo así como [0.7,2.5,1.7,3.5]. He intentado jugar con axes.transData, axes.get_transform () y similares, pero no conseguí encontrar la función correcta para hacer el trabajo.

Aquí hay una forma de hacerlo:

axes interiores impresos a 0.5, 2.5, 1.0, 0.3 (en los acordes de los axes externos)

Ejes interiores impresos a 0.5, 2.5, 1.0, 0.3 (en los acordes de los ejes externos)

Básicamente, necesita dos transformaciones: una de src-coords para mostrar y otra de mostrar a dest-coord. De los documentos parece que no hay manera directa:
http://matplotlib.org/users/transforms_tutorial.html

 bb_data = Bbox.from_bounds(0.5, 2.5, 1.0, 0.3) disp_coords = ax.transData.transform(bb_data) fig_coords = fig.transFigure.inverted().transform(disp_coords) 

ax Tanto el ax como el fig llevan el transformador con ellos – para mostrar los acordes!
Si llama inverted en ellos, obtendrá un transformador para la dirección inversa.

Aquí está el código completo para el ejemplo anterior:

 import matplotlib.pyplot as plt from matplotlib.transforms import Bbox plt.plot([0,2], [2,4]) fig = plt.gcf() ax = plt.gca() bb_data = Bbox.from_bounds(0.5, 2.5, 1.0, 0.3) disp_coords = ax.transData.transform(bb_data) fig_coords = fig.transFigure.inverted().transform(disp_coords) fig.add_axes(Bbox(fig_coords)) plt.show()