@@ -80,12 +80,10 @@ def __init__(self, adir, v_intervalx, d_intervalx, axes, *args, **kwargs):
8080 # This is a temporary member variable.
8181 # Do not depend on this existing in future releases!
8282 self ._axinfo = self ._AXINFO [adir ].copy ()
83- self ._axinfo .update ({'label' : {'space_factor' : 1.6 ,
84- 'va' : 'center' ,
83+ self ._axinfo .update ({'label' : {'va' : 'center' ,
8584 'ha' : 'center' },
8685 'tick' : {'inward_factor' : 0.2 ,
8786 'outward_factor' : 0.1 },
88- 'ticklabel' : {'space_factor' : 0.7 },
8987 'axisline' : {'linewidth' : 0.75 ,
9088 'color' : (0 , 0 , 0 , 1 )},
9189 'grid' : {'color' : (0.9 , 0.9 , 0.9 , 1 ),
@@ -265,7 +263,14 @@ def draw(self, renderer):
265263
266264 lxyz = 0.5 * (edgep1 + edgep2 )
267265
268- labeldeltas = info ['label' ]['space_factor' ] * deltas
266+ # A rough estimate; points are ambiguous since 3D plots rotate
267+ ax_scale = self .axes .bbox .size / self .figure .bbox .size
268+ ax_inches = np .multiply (ax_scale , self .figure .get_size_inches ())
269+ ax_points_estimate = sum (72. * ax_inches )
270+ deltas_per_point = 48. / ax_points_estimate
271+ default_offset = 21.
272+ labeldeltas = (self .labelpad + default_offset ) * deltas_per_point \
273+ * deltas
269274 axmask = [True , True , True ]
270275 axmask [index ] = False
271276 lxyz = move_from_center (lxyz , centers , labeldeltas , axmask )
@@ -394,8 +399,10 @@ def draw(self, renderer):
394399 renderer .M )
395400
396401 # Get position of label
397- labeldeltas = [info ['ticklabel' ]['space_factor' ] * x for
398- x in deltas ]
402+ default_offset = 8. # A rough estimate
403+ labeldeltas = (tick .get_pad () + default_offset ) * deltas_per_point \
404+ * deltas
405+
399406 axmask = [True , True , True ]
400407 axmask [index ] = False
401408 pos [tickdir ] = edgep1 [tickdir ]
0 commit comments