mirror of
https://github.com/Estom/notes.git
synced 2026-02-07 20:44:38 +08:00
86 lines
2.4 KiB
Markdown
86 lines
2.4 KiB
Markdown
# 对齐y标签
|
||
|
||
这里显示了两种方法,一种是使用对 [Figure.align_ylabels](https://matplotlib.org/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure.align_ylabels) 的简短调用,另一种是使用手动方式来对齐标签。
|
||
|
||
```python
|
||
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()
|
||
```
|
||
|
||

|
||
|
||
> 另见 Figure.align_ylabels and Figure.align_labels for a direct method of doing the same thing. Also Aligning Labels
|
||
|
||
或者,我们可以使用y轴对象的set_label_coords方法手动在子图之间手动对齐轴标签。请注意,这需要我们知道硬编码的良好偏移值。
|
||
|
||
```python
|
||
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()
|
||
```
|
||
|
||

|
||
|
||
## 参考
|
||
|
||
此示例中显示了以下函数,方法,类和模块的使用:
|
||
|
||
```python
|
||
import matplotlib
|
||
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
|
||
```
|
||
|
||
## 下载这个示例
|
||
|
||
- [下载python源码: align_ylabels.py](https://matplotlib.org/_downloads/align_ylabels.py)
|
||
- [下载Jupyter notebook: align_ylabels.ipynb](https://matplotlib.org/_downloads/align_ylabels.ipynb) |