【问题标题】:Matplotlib autoscaleMatplotlib 自动缩放
【发布时间】:2010-07-09 16:21:46
【问题描述】:

我需要使用 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) 没有做到这一点)。数据是高度可变的,因此设置硬限制不是一种选择。我怎样才能让它正确显示?

【问题讨论】:

    标签: python visualization matplotlib plot


    【解决方案1】:

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

    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()
    

    希望对您有所帮助。

    【讨论】:

    • autoscale_view(True,True,True) 解决了这个问题。现在,如果我能在可怕的文档中找到它在技术上的作用的解释。
    • 应该在这里的某个地方:matplotlib.sourceforge.net/api/axes_api.html。不过文档不太好。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-10-14
      • 1970-01-01
      • 2020-04-06
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      • 2012-06-14
      • 1970-01-01
      相关资源
      最近更新 更多