使用python';斯皮拉布

使用python';斯皮拉布,python,matplotlib,Python,Matplotlib,我有大量的绘图,希望使用python在同一个图中绘制它们。 我目前正在使用pylab进行绘图,但是因为太多了,所以它们是一个接一个地绘制的。 有没有办法使图形可以滚动,这样图形就足够大了,并且仍然可以通过滚动条看到 我可以使用PyQT来实现这一点,但pylab的figure对象可能有一个我没有的功能…这与您想要的东西的精神相匹配,如果不是字母的话。我认为您需要一个包含多个轴的窗口,然后能够在轴之间滚动(但每次只能平均看到一个),解决方案有一个轴和一个滑块,用于选择要打印的数据集 import n

我有大量的绘图,希望使用python在同一个图中绘制它们。 我目前正在使用pylab进行绘图,但是因为太多了,所以它们是一个接一个地绘制的。 有没有办法使图形可以滚动,这样图形就足够大了,并且仍然可以通过滚动条看到


我可以使用PyQT来实现这一点,但pylab的figure对象可能有一个我没有的功能…

这与您想要的东西的精神相匹配,如果不是字母的话。我认为您需要一个包含多个
轴的窗口,然后能够在轴之间滚动(但每次只能平均看到一个),解决方案有一个轴和一个滑块,用于选择要打印的数据集

import numpy
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
# fake data
xdata = numpy.random.rand(100,100) 
ydata = numpy.random.rand(100,100) 
# set up figure
fig = plt.figure()
ax = fig.add_subplot(111)
ax.autoscale(True)
plt.subplots_adjust(left=0.25, bottom=0.25)

# plot first data set
frame = 0
ln, = ax.plot(xdata[frame],ydata[frame])

# make the slider
axframe = plt.axes([0.25, 0.1, 0.65, 0.03])
sframe = Slider(axframe, 'Frame', 0, 99, valinit=0,valfmt='%d')

# call back function
def update(val):
    frame = numpy.floor(sframe.val)
    ln.set_xdata(xdata[frame])
    ln.set_ydata((frame+1)* ydata[frame])
    ax.set_title(frame)
    ax.relim()
    ax.autoscale_view()
    plt.draw()

# connect callback to slider   
sframe.on_changed(update)
plt.show()

这是根据本文中的代码改编的。您可以使用按钮小部件()添加下一个/上一个按钮。

您的曲线是否已相互偏移?如果没有,您可以尝试向每条曲线添加一个偏移量(
绘图(x,y+offset)
),以叠加它们,最终生成一个高而窄的图形。图形窗口gui有一个缩放和平移工具,可以与偏移量一起执行您想要的操作。我希望能够以适当的比例和位置查看图形,以便进行比较和分析。您能否更详细地解释您希望滚动的工作方式?如果数据已经重叠,您不想移动它,我看不出滚动窗口会有什么帮助。我有大约100个绘图,我希望能够将这些绘图放在同一个窗口中,并在绘图之间滚动。每个图都有不同的比例,所以移动数据不会有帮助,因为有很多数据,如果我移动它,就不可能理解任何东西。啊!对不起,我看错了你的问题。很好!你可能想用“plt.axes”和“plt.show”来代替pylab。我希望一次可以查看多个图形,但这对我来说仍然是一个足够好的解决方案。是的,很抱歉出现了拼写错误。如果您想一次看到多个图形,可以尝试使用多个轴同时绑定到同一个滑块?我最终还是使用了PyQt(尽管这并不容易)。我使用了中的代码,但我肯定会在将来尝试使用您建议的滑块。它让应用看起来好多了@tcaswell,这种方法适用于包含fill_between()和vlines()的帧,还是只适用于plot()?