”;
What are Spines?
In Matplotlib library spines refer to the borders or edges of a plot that frame the data area. These spines encompass the boundaries of the plot defining the area where data points are displayed. By default a plot has four spines such as top, bottom, left and right.
Manipulating spines in Matplotlib offers flexibility in designing the visual aspects of a plot by allowing for a more tailored and aesthetically pleasing presentation of data.
Key Characteristics of Spines
The following are the characteristics of spines.
Borders of the Plot − Spines form the borders of the plot area enclose the region where data is visualized.
Configurable Properties − Each spine top, bottom, left, and right can be customized individually by allowing adjustments to their appearance, color, thickness and visibility.
Visibility Control − Spines can be made visible or hidden to modify the appearance of the plot.
Uses of Spines
Plot Customization − Spines allow customization of the plot”s appearance enabling adjustments to the plot”s boundaries and style.
Aesthetics and Visualization − Customizing spines can enhance the aesthetics of the plot and draw attention to specific areas of interest.
Types of spines
Now let’s see the each and every spine available in a plot in detail.
Top Spine
The Top spine refers to the horizontal line at the top of the plot area that corresponds to the upper boundary of the y-axis. It”s one of the four spines such as top, bottom, left and right that form the borders around the plot.
Characteristics of the Top Spine
Boundary Line − The top spine represents the upper boundary of the plot area along the y-axis.
Default Visibility − By default the top spine is visible in Matplotlib plots.
Customization − Similar to other spines the top spine can be customized in terms of its visibility, color, linestyle and linewidth.
Example
In this example ax.spines[”top”].set_visible(False) hides the top spine by removing the upper boundary of the plot area along the y-axis.
import matplotlib.pyplot as plt # Creating a simple plot x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] plt.plot(x, y) # Accessing and modifying the top spine ax = plt.gca() # Get the current axes ax.spines[''top''].set_visible(False) # Hide the top spine plt.xlabel(''X-axis'') plt.ylabel(''Y-axis'') plt.title(''Plot with Hidden Top Spine'') plt.show()
Output
Use Cases for Modifying the Top Spine
Aesthetic Control − Customizing the visibility, color or style of the top spine can improve the appearance or match specific design requirements.
Adjusting Plot Boundaries − Hiding the top spine might be useful when the plot doesn”t require an upper boundary or when creating specific visual effects.
Bottom Spine
In Matplotlib the bottom spine refers to the horizontal line that forms the bottom border of the plot area corresponding to the x-axis.
Characteristics of the Bottom Spine
Association with x-axis − The bottom spine represents the border of the plot along the x-axis defining the lower boundary of the plot area.
Customization − Similar to other spines the bottom spine can be customized in terms of its visibility, color, line style, thickness and position.
Example of Customizing the Bottom Spine
In this example by using ax.spines[”bottom”].set_color(”blue”) changes the color of the bottom spine to blue, ax.spines[”bottom”].set_linewidth(2) sets the thickness of the bottom spine to 2 and ax.spines[”bottom”].set_visible(True) ensures the bottom spine is visible if in case it was hidden.
import matplotlib.pyplot as plt # Creating a simple plot x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] plt.plot(x, y) # Accessing and customizing the bottom spine ax = plt.gca() # Get the current axes ax.spines[''bottom''].set_color(''blue'') # Change the color of the bottom spine to blue ax.spines[''bottom''].set_linewidth(2) # Set the thickness of the bottom spine to 2 ax.spines[''bottom''].set_visible(True) # Make the bottom spine visible (if previously hidden) plt.xlabel(''X-axis'') plt.ylabel(''Y-axis'') plt.title(''Plot with Customized Bottom Spine'') plt.show()
Output
Use Cases for Bottom Spine Customization
Emphasizing Axes − By customizing the bottom spine can draw attention to the x-axis and enhance the plot”s aesthetics.
Highlighting Plot Boundaries − By adjusting the appearance of the bottom spine can help in delineating the plot area and improving its clarity.
Left Spine
In Matplotlib the left spine refers to the vertical line that forms the left border of the plot area, corresponding to the y-axis.
Characteristics of the Left Spine
Association with y-axis − The left spine represents the border of the plot along the y-axis defining the left boundary of the plot area.
Customization − The customization of the left spine is similar to the other pines which can be customized by color, visibility, border width etc.
Example of Customizing the Left Spine
In this example ax.spines[”left”].set_color(”green”) changes the color of the left spine to green, ax.spines[”left”].set_linewidth(2) sets the thickness of the left spine to 2 and ax.spines[”left”].set_visible(False) ensures the left spine is invisible if in case it was visible.
import matplotlib.pyplot as plt # Creating a simple plot x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] plt.plot(x, y) # Accessing and customizing the left spine ax = plt.gca() # Get the current axes ax.spines[''left''].set_color(''green'') # Change the color of the left spine to green ax.spines[''left''].set_linewidth(2) # Set the thickness of the left spine to 2 ax.spines[''left''].set_visible(False) # Make the left spine invisible (if previously visible) plt.xlabel(''X-axis'') plt.ylabel(''Y-axis'') plt.title(''Plot with Customized Left Spine'') plt.show()
Output
Right Spine
In Matplotlib the right spine represents the vertical line forming the right border of the plot area corresponding to the y-axis on the right side.
Characteristics of the Right Spine
Associated with y-axis − The right spine defines the right border of the plot along the y-axis representing, the y-axis on the right side of the plot.
Customization − Similar to other spines the right spine can be customized in terms of its visibility, color, line style, thickness and position.
Example of Customizing the Right Spine
In this example we are using ax.spines[”right”] to customize the right spine to the plot.
import matplotlib.pyplot as plt # Creating a simple plot x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] plt.plot(x, y) # Accessing and customizing the right spine ax = plt.gca() # Get the current axes ax.spines[''right''].set_color(''green'') # Change the color of the right spine to green ax.spines[''right''].set_linewidth(2) # Set the thickness of the right spine to 2 ax.spines[''right''].set_visible(True) # Make the right spine visible (if previously hidden) plt.xlabel(''X-axis'') plt.ylabel(''Y-axis'') plt.title(''Plot with Customized Right Spine'') plt.show()
Output
Customize spines of Matplotlib figures
In this example we are creating six figures to see and customize the spines for it.
Example
#First import the required libraries for the workbook. import numpy as np import matplotlib.pyplot as plt #draw graph for sines theta = np.linspace(0, 2*np.pi, 128) y = np.sin(theta) fig = plt.figure(figsize=(8,6)) #Define the axes with default spines ax1 = fig.add_subplot(2, 3, 1) ax1.plot(theta, np.sin(theta), ''b-*'') ax1.set_title(''default spines'') #Define the function to plot the graph def plot_graph(axs, title, lposition, bposition): ax = fig.add_subplot(axs) ax.plot(theta, y, ''b-*'') ax.set_title(title) ax.spines[''left''].set_position(lposition) ax.spines[''right''].set_visible(False) ax.spines[''bottom''].set_position(bposition) ax.spines[''top''].set_visible(False) ax.xaxis.set_ticks_position(''bottom'') ax.yaxis.set_ticks_position(''left'') #plot 3 graphs plot_graph(232, ''centered spines'', ''center'', ''center'') plot_graph(233, ''zeroed spines'', ''zero'', ''zero'') plot_graph(234, ''spines at axes [0.25, 0.75]'', (''axes'', 0.25),(''axes'', 0.75)) plot_graph(235, ''spines at data [1.0, -1.0]'', (''data'', 1.0),(''data'', -1.0)) plot_graph(236, ''adjusted spines'', (''outward'', 10), (''outward'', 10)) #fit the plot in the grid and display. plt.tight_layout() plt.show()
Output
”;