Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 55 additions & 23 deletions examples/pyplots/align_ylabels.py
Original file line number Diff line number Diff line change
@@ -1,40 +1,71 @@
"""
=============
Align Ylabels
=============
==============
Align y-labels
==============

Two methods are shown here, one using a short call to `.Figure.align_ylabels`
and the second a manual way to align the labels.

Align the axis labels between subplots.
"""
import numpy as np
import matplotlib.pyplot as plt

box = dict(facecolor='yellow', pad=5, alpha=0.2)
def make_plot(axs):
box = dict(facecolor='yellow', pad=5, alpha=0.2)

# Fixing random state for reproducibility
np.random.seed(19680801)
ax1 = axs[0, 0]
ax1.plot(2000*np.random.rand(10))
ax1.set_title('ylabels not aligned')
ax1.set_ylabel('misaligned 1', bbox=box)
ax1.set_ylim(0, 2000)

ax3 = axs[1, 0]
ax3.set_ylabel('misaligned 2',bbox=box)
ax3.plot(np.random.rand(10))

ax2 = axs[0, 1]
ax2.set_title('ylabels aligned')
ax2.plot(2000*np.random.rand(10))
ax2.set_ylabel('aligned 1', bbox=box)
ax2.set_ylim(0, 2000)

fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)
ax4 = axs[1, 1]
ax4.plot(np.random.rand(10))
ax4.set_ylabel('aligned 2', bbox=box)

# Plot 1:

fig, axs = plt.subplots(2, 2)
fig.subplots_adjust(left=0.2, wspace=0.6)
make_plot(axs)

# just align the last column of axes:
fig.align_ylabels(axs[:,1])
plt.show()

# Fixing random state for reproducibility
np.random.seed(19680801)
#############################################################################
#
# .. seealso::
# `.Figure.align_ylabels` and `.Figure.align_labels` for a direct method
# of doing the same thing.
# Also :doc:`/gallery/subplots_axes_and_figures/align_labels_demo`
#
#
# Or we can manually align the axis labels between subplots manually using the
# `set_label_coords` method of the y-axis object. Note this requires we know
# a good offset value which is hardcoded.

ax1.plot(2000*np.random.rand(10))
ax1.set_title('ylabels not aligned')
ax1.set_ylabel('misaligned 1', bbox=box)
ax1.set_ylim(0, 2000)
fig, axs = plt.subplots(2, 2)
fig.subplots_adjust(left=0.2, wspace=0.6)

ax3.set_ylabel('misaligned 2',bbox=box)
ax3.plot(np.random.rand(10))
make_plot(axs)

labelx = -0.3 # axes coords

ax2.set_title('ylabels aligned')
ax2.plot(2000*np.random.rand(10))
ax2.set_ylabel('aligned 1', bbox=box)
ax2.yaxis.set_label_coords(labelx, 0.5)
ax2.set_ylim(0, 2000)

ax4.plot(np.random.rand(10))
ax4.set_ylabel('aligned 2', bbox=box)
ax4.yaxis.set_label_coords(labelx, 0.5)
for j in range(2):
axs[j, 1].yaxis.set_label_coords(labelx, 0.5)

plt.show()

Expand All @@ -49,6 +80,7 @@
# in this example:

import matplotlib
matplotlib.figure.Figure.align_ylabels
matplotlib.axis.Axis.set_label_coords
matplotlib.axes.Axes.plot
matplotlib.pyplot.plot
Expand Down