@@ -136,6 +136,7 @@ def __init__(self,
136
136
rotation_mode = None ,
137
137
usetex = None , # defaults to rcParams['text.usetex']
138
138
wrap = False ,
139
+ transform_rotates_text = False ,
139
140
** kwargs
140
141
):
141
142
"""
@@ -157,6 +158,7 @@ def __init__(self,
157
158
self .set_horizontalalignment (horizontalalignment )
158
159
self ._multialignment = multialignment
159
160
self ._rotation = rotation
161
+ self ._transform_rotates_text = transform_rotates_text
160
162
self ._bbox_patch = None # a FancyBboxPatch instance
161
163
self ._renderer = None
162
164
if linespacing is None :
@@ -228,7 +230,20 @@ def _get_multialignment(self):
228
230
229
231
def get_rotation (self ):
230
232
"""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
232
247
233
248
def set_rotation_mode (self , m ):
234
249
"""
@@ -259,6 +274,7 @@ def update_from(self, other):
259
274
self ._fontproperties = other ._fontproperties .copy ()
260
275
self ._usetex = other ._usetex
261
276
self ._rotation = other ._rotation
277
+ self ._transform_rotates_text = other ._transform_rotates_text
262
278
self ._picker = other ._picker
263
279
self ._linespacing = other ._linespacing
264
280
self .stale = True
@@ -835,6 +851,7 @@ def get_prop_tup(self, renderer=None):
835
851
self ._verticalalignment , self ._horizontalalignment ,
836
852
hash (self ._fontproperties ),
837
853
self ._rotation , self ._rotation_mode ,
854
+ self ._transform_rotates_text ,
838
855
self .figure .dpi , weakref .ref (renderer ),
839
856
self ._linespacing
840
857
)
@@ -1124,6 +1141,17 @@ def set_rotation(self, s):
1124
1141
self ._rotation = s
1125
1142
self .stale = True
1126
1143
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
+
1127
1155
def set_verticalalignment (self , align ):
1128
1156
"""
1129
1157
Set the vertical alignment.
0 commit comments