@@ -136,6 +136,7 @@ def __init__(self,
136136 rotation_mode = None ,
137137 usetex = None , # defaults to rcParams['text.usetex']
138138 wrap = False ,
139+ transform_rotates_text = False ,
139140 ** kwargs
140141 ):
141142 """
@@ -157,6 +158,7 @@ def __init__(self,
157158 self .set_horizontalalignment (horizontalalignment )
158159 self ._multialignment = multialignment
159160 self ._rotation = rotation
161+ self ._transform_rotates_text = transform_rotates_text
160162 self ._bbox_patch = None # a FancyBboxPatch instance
161163 self ._renderer = None
162164 if linespacing is None :
@@ -228,7 +230,20 @@ def _get_multialignment(self):
228230
229231 def get_rotation (self ):
230232 """Return the text angle in degrees between 0 and 360."""
231- return get_rotation (self ._rotation ) # string_or_number -> number
233+ if self .get_transform_rotates_text ():
234+ angle = get_rotation (self ._rotation )
235+ x , y = self .get_unitless_position ()
236+ angles = [angle , ]
237+ pts = [[x , y ]]
238+ return self .get_transform ().transform_angles (angles , pts ).item (0 )
239+ else :
240+ return get_rotation (self ._rotation ) # string_or_number -> number
241+
242+ def get_transform_rotates_text (self ):
243+ """
244+ Return whether rotations of the transform affect the text direction.
245+ """
246+ return self ._transform_rotates_text
232247
233248 def set_rotation_mode (self , m ):
234249 """
@@ -259,6 +274,7 @@ def update_from(self, other):
259274 self ._fontproperties = other ._fontproperties .copy ()
260275 self ._usetex = other ._usetex
261276 self ._rotation = other ._rotation
277+ self ._transform_rotates_text = other ._transform_rotates_text
262278 self ._picker = other ._picker
263279 self ._linespacing = other ._linespacing
264280 self .stale = True
@@ -835,6 +851,7 @@ def get_prop_tup(self, renderer=None):
835851 self ._verticalalignment , self ._horizontalalignment ,
836852 hash (self ._fontproperties ),
837853 self ._rotation , self ._rotation_mode ,
854+ self ._transform_rotates_text ,
838855 self .figure .dpi , weakref .ref (renderer ),
839856 self ._linespacing
840857 )
@@ -1124,6 +1141,17 @@ def set_rotation(self, s):
11241141 self ._rotation = s
11251142 self .stale = True
11261143
1144+ def set_transform_rotates_text (self , t ):
1145+ """
1146+ Whether rotations of the transform affect the text direction.
1147+
1148+ Parameters
1149+ ----------
1150+ t : bool
1151+ """
1152+ self ._transform_rotates_text = t
1153+ self .stale = True
1154+
11271155 def set_verticalalignment (self , align ):
11281156 """
11291157 Set the vertical alignment.
0 commit comments