首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在matplotlib中设置子图的xlim和ylim

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

Stack Overflow用户
提问于 2013-04-07 10:20:55
回答 1查看 514.5K关注 0票数 227

我想在matplotlib中限制特定子图的X和Y轴。子图图形本身没有任何轴属性。例如,我想只更改第二个图的限制:

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-07 10:33:38

您应该使用matplotlib的OO接口,而不是状态机接口。几乎所有的plt.*函数都是基本上执行gca().*的薄包装器。

plt.subplot返回一个axes对象。一旦你有了一个轴对象的引用,你就可以直接绘制它,改变它的限制,等等。

代码语言:javascript
复制
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])

依此类推,任意多个轴都可以。

或者更好的是,将所有内容都封装在一个循环中:

代码语言:javascript
复制
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)
票数 320
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15858192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档