Matplotlib自动缩放

时间:2010-07-09 16:21:47

标签: python visualization matplotlib plot

我需要使用matplotlib自动获取适合数据的图表。这是我给出的代码:

import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection
....
lines = LineCollection(mpl.line_holder, colors=mpl.colorholder , linestyle='solid')
plt.axes().add_collection(lines)
plt.axes().set_aspect('equal', 'datalim')
plt.draw()
plt.show()

这会创建一个绘图,但无论数据是什么,窗口总是相同的(0-~.8),即使所有数据都在该窗口之外。生成的窗口无法缩小,只有在,因此这是一个主要问题。我找不到任何设置任何类型的大小,也无法找到有关默认值的详细信息。我需要窗口自动适应数据,但我找不到任何功能(由于某种原因,autoscale_on(True)不会这样做)。数据变化很大,因此设置硬限制不是一种选择。如何正确显示?

2 个答案:

答案 0 :(得分:12)

不确定这是否是您想要的,但如果这不是您想要的,我可以更改它。

import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection

import pylab as p

fig = plt.figure()
pts1 = []
pts2 = []
for i in range(100):
    pts1.append([i,i])
    pts2.append([-i-3,-i])
lines = LineCollection([pts1,pts2], linestyles='solid')
subplt = fig.add_subplot(111,aspect='equal')
subplt.add_collection(lines)
subplt.autoscale_view(True,True,True)
p.show()

希望有所帮助。

答案 1 :(得分:1)

查看Eli Bendersky's Website,特别是this post。可以下载帖子底部的示例。它允许您设置x轴是否将跟随绘图,或者在y轴随数据变化时保持静态。