In this article, we will learn how to rotate text in Matplotlib in Python. Out of the many parameters in matplotlib.text(), there are three main parameters that will define text rotation and how the text will be rotated.
Syntax of matplotlib.text method
Syntax: matplotlib.text(x=0, y=0, text=”, rotation=None, rotation_mode=None, transform_rotates_text=False)
Parameter:
- X, Y: x and y coordinate value
- text: str,Text value
- rotation: float or {‘vertical’, ‘horizontal’}, Defines the angle in degrees between 0-360 for the text to rotate. ‘+ve’ values for rotating the text anticlockwise and ‘-ve’ values rotates the text clockwise. ‘horizontal’ = 0, ‘vertical’ = 90.
- rotation_mode: {None, ‘default’, ‘anchor’}, Specifies the text rotation mode. None or “default”: text is rotated first, then aligned performed.
- anchor: rotation of the text occurs after alignment.
- transform_rotates_text: bool
Return: whether rotations of the transform affect the text direction.
Stepwise Implementation
We can now add these parameters and change their values as we want to rotate the text in the plot.
Step 1: Import the library
import matplotlib.pyplot as plt
|
Step 2: Set the x and y-axis range.
plt.xlim( 0 , 3 )
plt.ylim( 0 , 5 )
|
Step 3: Plotting a line for reference.
plt.plot(( 1 , 4 ), ( 1 , 1 ), 'b' )
|
Step 4: Insert text normally with color.
plt.text( 1 , 1 , '(1) Geeks_for_Geeks' , color = 'green' )
|
Step 5: Insert text rotated default.
plt.text( 1 , 2 , '(3) Geeks_for_Geeks 30°' ,
color = 'green' , rotation = 30 ,
rotation_mode = 'anchor' )
|
Step 6: Insert text rotated relatively to plot coordinates.
plt.text( 1 , 1.5 , '(2) Geeks_for_Geeks 30° relative' ,
color = 'green' , rotation = 30 ,
rotation_mode = 'anchor' ,
transform_rotates_text = True )
|
Complete Code:
In the figure, we can see that, (1) is a normal text placed horizontally in the plot, (2) is a text rotated 30o with respect to plot coordinates, and (3) is a text rotated 30o by default.
# Text rotation relative to line in matplotlib import matplotlib.pyplot as plt
# setting x and y axis range plt.xlim( 0 , 3 )
plt.ylim( 0 , 5 )
# plotting a line for reference # plt.plot((1, 4), (1, 1), 'b') # inserting text normally plt.text( 1 , 1 , '(1) Geeks_for_Geeks' , color = 'green' )
# Inserting text rotated default plt.text( 1 , 2 , '(3) Geeks_for_Geeks 30°' , color = 'green' ,
rotation = 30 , rotation_mode = 'anchor' )
# Inserting text rotated relatively to plot coordinates plt.text( 1 , 1.5 , '(2) Geeks_for_Geeks 30° relative' ,
color = 'green' ,
rotation = 30 , rotation_mode = 'anchor' ,
transform_rotates_text = True )
# Display plot plt.show() |
Output: