我正在尝试使用反转的y轴制作4个子图(2x2),同时在子图之间共享y轴。这是我得到的:
import matplotlib.pyplot as plt
import numpy as np
fig,AX = plt.subplots(2, 2, sharex=True, sharey=True)
for ax in AX.flatten():
ax.invert_yaxis()
ax.plot(range(10), np.random.random(10))
ax.invert_axis()
时似乎忽略了sharey=True
。如果我设置sharey=False
,我会在所有子图中得到反转的y轴,但显然y轴不再在子图中共享。我在这里做错了,这是一个错误,还是做这样的事情没有意义?
答案 0 :(得分:12)
由于您设置了sharey=True
,现在所有三个轴的行为都像是一个。例如,当您反转其中一个时,会影响所有四个。问题在于你在一个for
循环中反转轴,它在一个长度为4的迭代中运行,因此你将所有轴反转偶数次......通过反转已经倒置的轴,你只需恢复原来的方向。尝试使用奇数个子图,您将看到轴成功反转。
要解决您的问题,您应该反转一个子图的y轴(并且只反转一次)。以下代码适用于我:
import matplotlib.pyplot as plt
import numpy as np
fig,AX = plt.subplots(2, 2, sharex=True, sharey=True)
## access upper left subplot and invert it
AX[0,0].invert_yaxis()
for ax in AX.flatten():
ax.plot(range(10), np.random.random(10))
plt.show()