<p>作为对另一个答案<a href="https://stackoverflow.com/questions/59867709/creating-subplots-with-equal-axis-scale-python-matplotlib/59869441#comment105899440_59869441">this comment</a>的回应,这里演示了在这个用例中使用<code>sharex=True</code>和<code>sharey=True</code>:</p>
<pre class="lang-py prettyprint-override"><code>import matplotlib.pyplot as plt
import numpy as np
# Supply the limits since random data will be plotted
wbound = -0.1
ebound = 1.1
sbound = -0.1
nbound = 1.1
fig, axs = plt.subplots(nrows=4, ncols=4, figsize=(16,12), sharex=True, sharey=True)
plt.xlim(wbound, ebound)
plt.ylim(sbound, nbound)
for n, ax in enumerate(axs.flatten()):
ax.scatter(np.random.random(20), np.random.random(20),
c = np.random.random(20), marker = '.')
ticks = [n % 4 == 0, n > 12]
ax.tick_params(left=ticks[0], bottom=ticks[1])
ax.set_title('Depth = ' + str(n - 1) +'km to ' + str(n) + 'km', size = 12)
plt.suptitle('Magnitude of Events at Different Depth Slices, 1950 to Today', y = 0.95)
plt.subplots_adjust(wspace=0.05)
plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/KQbCy.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/KQbCy.png" alt="enter image description here"/></a></p>
<p>对一些事情的解释:</p>
<ol>
<li>我用<code>subplots_adjust(wspace=0.05)</code>减小了子地块之间的水平间距</li>
<li><code>plt.suptitle</code>不需要(也不应该)在循环中</李>
<li><code>ticks = [n % 4 == 0, n > 12]</code>为每个轴创建一对<code>bool</code>,然后用于控制绘制哪些记号</李>
<li>用<code>ax.tick_params(left=ticks[0], bottom=ticks[1])</code>控制每个轴的左勾号和下勾号</li>
<li><code>plt.xlim()</code>和<code>plt.ylim()</code>只需在循环之前调用一次<strong></li>
</ol>