每行共享 y 轴
Shared y axis per row
我对使用 matplotlib 的子图的每行共享 y 轴有疑问。
我有以下脚本作为示例。当我在 subplots 函数中使用 sharey=True
作为参数然后使用 ax[x, x].set_ylim(n, n)
然后它使用我使用的最后一个参数。
import matplotlib.pyplot as plt
fig, ax = plt.subplots(3, 2, figsize=(8, 10), sharey=True, gridspec_kw={'height_ratios': [1, 2, 2]})
ax[0, 0].set_ylim(-1.5, 1.5)
ax[1, 0].set_ylim(-40, 40)
ax[1, 1].set_ylim(-40, 40)
ax[2, 0].set_ylim(-40, 40)
ax[2, 1].set_ylim(-40, 40)
有没有一种方法可以让我每行共享 y 轴?
您可以通过指定 sharey='row'
来执行您想要的操作,如本 matplotlib demo 所示。这里有一些代码可以显示热度:
from matplotlib import pyplot as plt
import numpy as np
x1 = np.linspace(0,2*np.pi,100)
x2 = np.linspace(-1,1,100)
f, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, sharey='row')
ax1.plot(x1, np.sin(x1))
ax1.set_title('sin(x)')
ax2.plot(x1, 2*np.cos(x1)+1)
ax2.set_title('2*cos(x)+1')
ax3.plot(x2, np.sqrt(np.abs(x2)))
ax3.set_title('sqrt(abs(x))')
ax4.plot(x2, x2**3)
ax4.set_title('x**3')
f.tight_layout()
plt.show()
结果如下:
我对使用 matplotlib 的子图的每行共享 y 轴有疑问。
我有以下脚本作为示例。当我在 subplots 函数中使用 sharey=True
作为参数然后使用 ax[x, x].set_ylim(n, n)
然后它使用我使用的最后一个参数。
import matplotlib.pyplot as plt
fig, ax = plt.subplots(3, 2, figsize=(8, 10), sharey=True, gridspec_kw={'height_ratios': [1, 2, 2]})
ax[0, 0].set_ylim(-1.5, 1.5)
ax[1, 0].set_ylim(-40, 40)
ax[1, 1].set_ylim(-40, 40)
ax[2, 0].set_ylim(-40, 40)
ax[2, 1].set_ylim(-40, 40)
有没有一种方法可以让我每行共享 y 轴?
您可以通过指定 sharey='row'
来执行您想要的操作,如本 matplotlib demo 所示。这里有一些代码可以显示热度:
from matplotlib import pyplot as plt
import numpy as np
x1 = np.linspace(0,2*np.pi,100)
x2 = np.linspace(-1,1,100)
f, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, sharey='row')
ax1.plot(x1, np.sin(x1))
ax1.set_title('sin(x)')
ax2.plot(x1, 2*np.cos(x1)+1)
ax2.set_title('2*cos(x)+1')
ax3.plot(x2, np.sqrt(np.abs(x2)))
ax3.set_title('sqrt(abs(x))')
ax4.plot(x2, x2**3)
ax4.set_title('x**3')
f.tight_layout()
plt.show()
结果如下: