-
-
Notifications
You must be signed in to change notification settings - Fork 8.3k
Expand file tree
/
Copy pathalign_ylabels.py
More file actions
85 lines (67 loc) · 2.22 KB
/
align_ylabels.py
File metadata and controls
85 lines (67 loc) · 2.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
"""
==============
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.
"""
import numpy as np
import matplotlib.pyplot as plt
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)
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()
#############################################################################
#
# .. 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
# `~.Axis.set_label_coords` method of the y-axis object. Note this requires
# we know a good offset value which is hardcoded.
fig, axs = plt.subplots(2, 2)
fig.subplots_adjust(left=0.2, wspace=0.6)
make_plot(axs)
labelx = -0.3 # axes coords
for j in range(2):
axs[j, 1].yaxis.set_label_coords(labelx, 0.5)
plt.show()
#############################################################################
#
# .. admonition:: References
#
# The use of the following functions, methods, classes and modules is shown
# in this example:
#
# - `matplotlib.figure.Figure.align_ylabels`
# - `matplotlib.axis.Axis.set_label_coords`
# - `matplotlib.axes.Axes.plot` / `matplotlib.pyplot.plot`
# - `matplotlib.axes.Axes.set_title`
# - `matplotlib.axes.Axes.set_ylabel`
# - `matplotlib.axes.Axes.set_ylim`