如何在matplotlib中设置一个子图的xlim和ylim
我想限制matplotlib中的X轴和Y轴,但要限制一个特定的子图。 正如我所看到的subplot figure本身没有任何轴属性。 我想要例如改变第二个情节的限制!
import matplotlib.pyplot as plt fig=plt.subplot(131) plt.scatter([1,2],[3,4]) fig=plt.subplot(132) plt.scatter([10,20],[30,40]) fig=plt.subplot(133) plt.scatter([15,23],[35,43]) plt.show()
你应该学习matplotlib的一些OO接口,而不仅仅是状态机接口。 几乎所有的plt.*
函数都是基于gca().*
薄包装。
plt.subplot
返回一个axes
对象。 一旦你有了一个轴对象的引用,你可以直接绘制它,改变它的限制等。
import matplotlib.pyplot as plt ax1 = plt.subplot(131) ax1.scatter([1, 2], [3, 4]) ax1.set_xlim([0, 5]) ax1.set_ylim([0, 5]) ax2 = plt.subplot(132) ax2.scatter([1, 2],[3, 4]) ax2.set_xlim([0, 5]) ax2.set_ylim([0, 5])
依此类推。
或者更好,把它们全部包装起来:
import matplotlib.pyplot as plt DATA_x = ([1, 2], [2, 3], [3, 4]) DATA_y = DATA_x[::-1] XLIMS = [[0, 10]] * 3 YLIMS = [[0, 10]] * 3 for j, (x, y, xlim, ylim) in enumerate(zip(DATA_x, DATA_y, XLIMS, YLIMS)): ax = plt.subplot(1, 3, j + 1) ax.scatter(x, y) ax.set_xlim(xlim) ax.set_ylim(ylim)