# Unlocking the Power of Matplotlib: Creating Optimal Subplots with Tight_Layout()

## Unlocking the Power of Matplotlib: Using Tight_Layout() Function to Create Subplots and Adjust Padding

When it comes to creating visualizations, Matplotlib is one of the most popular choices among data scientists and analysts alike. With its extensive library of functions, customization options, and ease of use, it is no wonder that Matplotlib continues to hold a special place in the hearts of data enthusiasts.

In this article, we will explore one of the most useful features that Matplotlib has to offer – the `tight_layout()` function. We will discuss how you can use this function to create subplots with minimal padding and adjust padding to achieve your desired visualization style.

So, buckle up and get ready to unlock the power of Matplotlib!

## Creating subplots with minimal padding

Subplots are a great way to display multiple plots in a single figure. They help to compare and contrast results and make it easier to identify patterns or trends.

However, the default settings for subplots in Matplotlib may not always provide the optimal layout. This is where the `tight_layout()` function comes in.

It helps to adjust the padding around the subplots to create a cleaner, more professional-looking visualization.

To get started, let’s define some data and layout for our subplots.

Suppose we have three sets of data that we want to display side-by-side. We can create subplots using the following code:

``````import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
fig, ax = plt.subplots(1, 3, figsize=(8, 3), sharey=True)
ax[0].plot(x, y1)
ax[1].plot(x, y2)
ax[2].plot(x, y3)
plt.show()
``````

Here, we defined our data using NumPy’s `arange` function and created three sets of y-values using the sine, cosine, and tangent functions available in NumPy. We created a figure with three subplots using the `subplots` function, which returned two objects – the figure object (`fig`) and the axes object (`ax`). We set the width and height of the figure using the `figsize` parameter and shared the y-axis among the subplots using the `sharey` parameter.

Finally, we used the `plot` function to display our data on each subplot.

It is always a good practice to add titles to your subplots to help the audience understand the data better. We can use Matplotlib’s `set_title` function to add titles to each of our subplots.

### We can modify the code we used earlier to add titles as shown below:

``````import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
fig, ax = plt.subplots(1, 3, figsize=(8, 3), sharey=True)
ax[0].plot(x, y1)
ax[0].set_title("Sine")
ax[1].plot(x, y2)
ax[1].set_title("Cosine")
ax[2].plot(x, y3)
ax[2].set_title("Tangent")
plt.show()
``````

Here, we used the `set_title` function of the axes object `ax` to set titles for each subplot. We simply passed in a string containing the title we want to display in each subplot.

### Applying tight_layout() function

Now that we have created our subplots and added titles, let’s use the `tight_layout()` function to adjust the paddings. We can simply call the function on our figure object to automatically adjust the padding around our subplots.

Here’s how we can modify our code:

``````import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
fig, ax = plt.subplots(1, 3, figsize=(8, 3), sharey=True)
ax[0].plot(x, y1)
ax[0].set_title("Sine")
ax[1].plot(x, y2)
ax[1].set_title("Cosine")
ax[2].plot(x, y3)
ax[2].set_title("Tangent")
plt.tight_layout()
plt.show()
``````

Here, we simply called the `tight_layout()` function on the figure object (`plt`) to optimize the layout of our subplots.

## Conclusion

In this article, we explored how to use Matplotlib’s `tight_layout()` function to create subplots with minimal padding and adjust padding to achieve a clean, professional-looking visualization. We started by defining some data and a layout for our subplots, then added titles to each of our subplots.

Finally, we used the `tight_layout()` function to optimize the padding around our subplots. We hope this article has been informative and helpful to you.

While the `tight_layout()` function can help to adjust the padding around subplots automatically, there may be cases where you want to customize the padding further. In such cases, you can use the `pad` argument of the `tight_layout()` function to increase or decrease the padding around your subplots.

To increase the padding around your subplots, you can simply pass a positive value to the `pad` argument. The value you pass will be added to the amount of padding generated by the `tight_layout()` function.

Similarly, to decrease the padding around your subplots, you can pass a negative value to the `pad` argument. Here’s an example of how you can increase the padding around your subplots:

``````import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
fig, ax = plt.subplots(1, 3, figsize=(8, 3), sharey=True)
ax[0].plot(x, y1)
ax[0].set_title("Sine")
ax[1].plot(x, y2)
ax[1].set_title("Cosine")
ax[2].plot(x, y3)
ax[2].set_title("Tangent")
plt.show()
``````

Here, we set the `pad` argument of the `tight_layout()` function to 2, which increases the padding around our subplots.

If you find yourself needing more control over the padding around your subplots, you can use the `subplot_tool()` function. This function opens a window that allows you to adjust the padding, spacing, and margins of your subplots manually.

Here’s an example of how you can use the `subplot_tool()` function:

``````import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
fig, ax = plt.subplots(1, 3, figsize=(8, 3), sharey=True)
ax[0].plot(x, y1)
ax[0].set_title("Sine")
ax[1].plot(x, y2)
ax[1].set_title("Cosine")
ax[2].plot(x, y3)
ax[2].set_title("Tangent")
plt.subplot_tool()
plt.show()
``````

Here, we added the `plt.subplot_tool()` function, which opens a window that displays the layout of our subplots. We can adjust the padding, spacing, and margins of our subplots by dragging the edges of each subplot using our mouse cursor.

Matplotlib is a powerful data visualization library that offers a wide range of customization options. If you want to learn more about Matplotlib, here are some additional resources:

• The Matplotlib documentation contains a comprehensive list of functions, tutorials, and examples to help you get started with the library.
• Data Camp offers a Matplotlib tutorial that provides a hands-on introduction to creating visualizations in Matplotlib.
• Real Python provides a series of tutorials on Matplotlib that cover various aspects of the library, including creating line charts, bar charts, scatter plots, and more.
• The Python Graph Gallery is a curated gallery of Matplotlib visualizations that provides inspiration for creating your own visualizations.

In conclusion, the `tight_layout()` function in Matplotlib is a powerful tool for creating optimal subplots with minimal padding. You can further customize the padding using the `pad` argument of the function or use the `subplot_tool()` function to adjust the layout manually.

Matplotlib is a vast library with endless customization options that you can explore to create impactful data visualizations. By mastering the `tight_layout()` function, you can take your plots to the next level and ensure that your audience can quickly interpret your data.

Remember to always add titles to your subplots and keep the presentation simple and professional.