为了账号安全,请及时绑定邮箱和手机立即绑定

如何在matplotlib中为子图设置xlim和ylim

如何在matplotlib中为子图设置xlim和ylim

FFIVE 2019-12-12 13:11:50
我想在matplotlib中限制X和Y轴,但要指定一个特定的子图。如我所见,子图图本身没有任何axis属性。例如,我只想更改第二个图的极限!import matplotlib.pyplot as pltfig=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()
查看完整描述

2 回答

?
MM们

TA贡献1886条经验 获得超2个赞

您应该学习一些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)


查看完整回答
反对 回复 2019-12-12
?
交互式爱情

TA贡献1712条经验 获得超3个赞

您使用set_xlimset_ylim。与直接使用axes对象相比,plt具有选项要得多。实际上,几乎每个函数plt都是一个非常薄的包装器,它首先调用ax = plt.gca()然后调用该对象上曾经有过的任何函数。plt除了交互工作之外,您不应该将其用于其他任何事情。

查看完整回答
反对 回复 2019-12-12
  • 2 回答
  • 0 关注
  • 4302 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信