Creating Reusable AxesSubplot Objects in Matplotlib
Matplotlib provides the Figure.add_subplot method as the standard approach for adding AxesSubplot objects to a figure. While this is effective, there may be scenarios where creating AxesSubplot objects independently of the figure is desirable.
To decouple AxesSubplot creation from figure instances, one can harness the power of passing axes instances to functions. For instance:
def plot(x, y, ax=None): if ax is None: ax = plt.gca() # Get the current axes instance (default) ax.plot(x, y, 'go') ax.set_ylabel('Yabba dabba do!')
In this example, the plot function takes an optional axes argument, providing flexibility in its usage:
# Create a figure with two subplots fig1, (ax1, ax2) = plt.subplots(nrows=2) plot(x, np.sin(x), ax1) # Use the first axes instance plot(x, np.random.random(100), ax2) # Use the second axes instance # Create a new figure fig2 = plt.figure() plot(x, np.cos(x)) # Use the new figure's axes instance plt.show()
Additionally, axes instances can be appended to existing figures, allowing for reuse:
import matplotlib.pyplot as plt # Create an axes instance ax = plt.gca() ax.plot(range(10)) # Create a new figure fig2 = plt.figure() fig2.axes.append(ax) # Add the existing axes instance to the new figure plt.show()
While it may be possible to further customize the axes instance to fit specific "shapes," the ease of passing around figures and axes instances or lists of instances is generally more practical and efficient for complex scenarios.
Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.
Copyright© 2022 湘ICP备2022001581号-3