Explain Codes LogoExplain Codes Logo

How to set common axes labels for subplots

python
data-visualization
subplots
axis-labels
Alex KataevbyAlex Kataev·Aug 20, 2024
TLDR

To add common x-axis and y-axis labels to your subplots in matplotlib, utilize the fig.supxlabel() and fig.supylabel() methods respectively. Include these lines of code subsequent to creating the subplot grid, but prior to plotting to confirm all subplots share these labels.

import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) fig.supxlabel('Shared x-axis label') # x marks the spot! fig.supylabel('Shared y-axis label') # Y so serious? plt.show()

Getting grips with axis sharing

When dealing with subplots, there's often a logical connection that can be drawn. These visual representations might depict varying views of the same data story or different metrics that can be compared and contrasted. For cleaner, less cluttered visualisations, shared axes labels are the way to go. This approach reduces the redundancy and aids in focusing on the crux - the data.

Dealing with exponential data using Loglog

If you're staring down the barrel of exponential data, a loglog scale may well be your best friend for a more accurate data representation. Using ax.loglog(), coupled with setting common labels is a cinch and ensures an aesthetically pleasing and consistent style throughout your masterpieces.

Maintaining a clean layout

constrained_layout=True is an option in plt.subplots() you'd like to become chummy with. This helper method adjusts subplots and their decorations to fit neatly into the figure area. No more awkward overlaps or mis-positioned labels!

Becoming a minimalist

In the world of design, less is more - and it's no different with data visualisation. Wherever possible, consider removing redundant axis lines and ticks using plt.setp(). Or, you could up the ante by creating a large subplot with fig.add_subplot() as a covering blanket over your smaller subplots.

Titles and labels in alignment

For easy distinction, ensure each subplot rocks a unique title using ax.set_title(). Tidy up the setting of axis labels by employing plt.setp() or the special fig.text() methods - a direct and more controlled approach to position these labels.

Examples of axes-label relationship in real-world scenarios

A theory is all well and good, but nothing beats a good practical application to hammer the concept home. Let's look at some examples:

Data comparison

Think about instances where you are comparing multiple data sets. Having each subplot labelled individually can make it feel overwhelming. But throw in common axis labeling, and you've got a clean and easily understandable plot on your hands!

Analysis of time series data

When you're doing time series analysis, it's quite common to align data points over consistent time intervals. Shared x-axis labels can help represent these intervals, eliminating clutter.

Multidimensional data

When dealing with mulit-dimensional data, shared labels help users interpret associations between different dimensions plotted on various subplots.

Avoid the common pitfall of mislabelling your grids by accurately indexing your axes when dealing with a grid of subplots using axs[-1, :] for x-axis and axs[:, 0] for y-axis.

Subplots, but make them stylish

Remember, presentation is everything. While the commands do play a crucial role, how you present this visual information can effectively aid in communicating your data insights.

Suplabels but, make it fancy

Supping your plot game with fig.supxlabel() and fig.supylabel() is great, but you can take it a step further with a contrib library that gives you suplabel. This function adds pizzazz with custom alignment capabilities and a transform=fig.transFigure for better positioning control.

Presentation is key

Once you've created and gussied up your figures, save them as an image using fig.savefig(). Think of it as creating a catalog of your previous masterpieces for easy sharing and future reference.

Making the best use of grid space

When you're dealing with a grid of subplots, enumerate() is a tool you'd want in your kit. It effectively iterates over axes, allowing you to set unique attributes (like titles) quickly and concisely.

Subplot Management 101

When it comes to creating precise and bespoke arrangements for complex figures, knowing the differences between add_axes and add_subplot can be a game-changer for subplot management.