Pyplot - 限制x轴后重新缩放y轴

时间:2011-10-18 03:28:51

标签: python matplotlib

我正在尝试使用pyplot绘制一些数据,然后使用xlim()x轴“放大”。但是,当我这样做时,新绘图不会重新缩放y轴 - 我做错了吗?

示例 - 在此代码中,绘图y轴范围仍然最多为20,而不是10:

from pylab import *

x = range(20)
y = range(20)

xlim(0,10)
autoscale(enable=True, axis='y', tight=None)
scatter(x,y)
show()
close()

2 个答案:

答案 0 :(得分:0)

我不知道,尽管您可以尝试使用

手动过滤点数
scatter([(a,b) for a,b in zip(x,y) if a>0 and a<10])

答案 1 :(得分:0)

意识到这是一个古老的问题,但这是我(认真地)解决问题的方式:

  1. 使用.plot()代替.scatter()
  2. 稍后(即使在某个地方返回图形之后)也使用ax.get_lines()[0].get_xydata()
  3. 访问绘图数据
  4. 使用该数据将y轴重新缩放为xlims

代码段应该起作用:

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

x = range(20)
y = range(20)

xlims = [0, 10]

ax.set_xlim(xlims)
ax.plot(x, y, marker='.', ls='')

# pull plot data
data = ax.get_lines()[0].get_xydata()

# cut out data in xlims window
data = data[np.logical_and(data[:, 0] >= xlims[0], data[:, 0] <= xlims[1])]

# rescale y
ax.set_ylim(np.min(data[:, 1]), np.max(data[:, 1]))

plt.show()