Skip to content

Commit

Permalink
Merge pull request #11424 from jklymak/doc-align-ylabels
Browse files Browse the repository at this point in the history
DOC: point align-ylabel demo to new align-label functions
  • Loading branch information
timhoffm committed Jun 21, 2018
2 parents 2b51fa3 + 07501bd commit b078643
Showing 1 changed file with 55 additions and 23 deletions.
78 changes: 55 additions & 23 deletions examples/pyplots/align_ylabels.py
@@ -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

0 comments on commit b078643

Please sign in to comment.