我只想绘制数组的一部分,修复x部分,但让y部分自动缩放。我试过如下所示,但没有成功。
有什么建议吗?
import numpy as np
import matplotlib.pyplot as plt
data=[np.arange(0,101,1),300-0.1*np.arange(0,101,1)]
plt.figure()
plt.scatter(data[0], data[1])
plt.xlim([50,100])
plt.autoscale(enable=True, axis='y')
plt.show()
虽然当他建议只绘制必要的数据时,Joe Kington肯定会提出最合理的答案,但在某些情况下,最好绘制所有数据并缩放到某个部分。另外,最好有一个只需要axes对象的“autoscale_y”函数(即,与需要直接使用数据的答案here不同)
下面是一个函数,它仅根据可见x区域中的数据重新缩放y轴:
这是一个黑客,可能不会在很多情况下工作,但对于一个简单的情节,它工作得很好。
下面是一个使用此函数的简单示例:
我以@DanHickstein的答案为基础,涵盖了plot、scatter和axhline/axvline缩放x轴或y轴的情况。它可以简单地称为
autoscale()
来处理最新的轴。如果你想编辑它,请fork it on gist。它和它的前身一样,有点老套,但这是必要的,因为集合和行有不同的返回xy坐标的方法,而且由于axhline/axvline只有两个数据点,所以很难使用。
这就是它的作用:
自动缩放始终使用全部数据范围,因此y轴按y数据的全部范围缩放,而不仅仅是x限制范围内的数据。
如果要显示数据的子集,则可能最容易仅绘制该子集:
相关问题 更多 >
编程相关推荐