Tamaño del marcador de la dispersión de puntos proporcional al valor del eje: ¿por qué el número de píxeles para los ejes x e y es diferente para aspecto = ‘igual’?

Mi pregunta es, por lo que veo, muy relacionada con esta publicación .

Necesito trazar algunos datos con un tamaño de marcador estrictamente proporcional al valor de los ejes. (Ya hice la pregunta aquí ).

Mi enfoque es el siguiente:

  • Crear un diagtwig de dispersión vacío para la referencia de píxeles
  • Dispersa 2 puntos en la esquina inferior izquierda y superior derecha
  • Limita los ejes exactamente a estos dos puntos.
  • use transData.transform para obtener los valores de píxeles de esos dos puntos
  • obtener la distancia de píxeles como la diferencia en el número de píxeles de estos dos puntos
  • (Ahora que tengo la relación de distancia a píxeles, dispersar mis datos con
    s=(size*dist_to_pix_ratio)**2 ; pero eso no es importante en este momento.

El problema es: cuando hago exactamente lo que he descrito, obtengo dos valores diferentes para el número de píxel para el eje y y el eje x.

Aquí hay un código mínimo:

     import matplotlib.pyplot as plt fig = plt.figure(figsize=(7,7)) ax1 = fig.add_subplot(111, aspect='equal') #setting up an empty scatterplot for pixel reference xedges=[0.0, 1.0] yedges=[0.0, 1.0] emptyscatter=ax1.scatter(xedges, yedges, s=0.0) #set axes limits ax1.set_xlim(0.00,1.00) ax1.set_ylim(0.00,1.00) # Calculating the ratio of pixel-to-unit upright = ax1.transData.transform((1.0,1.0)) lowleft = ax1.transData.transform((0.0,0.0)) x_to_pix_ratio = upright[0] - lowleft[0] y_to_pix_ratio = upright[1] - lowleft[1] print x_to_pix_ratio, y_to_pix_ratio 

    que devuelve:

     434.0 448.0 

    ¿Alguien puede explicar por qué no son iguales?

    No estoy seguro de si es relevante, pero estoy usando Python 2.7.12 y matplotlib 1.5.1