在Linux上使用可滚动的x(时间/水平)轴绘制数据

Wak*_*nka 4 python plot r matplotlib scipy

我想绘制x轴很长的数据.如果我绘制整个x轴,那么绘图会缩小,几乎不可读.我发现对SO答案指向以下 SciPy的/ matplotlib代码.但是当我尝试运行上面提到的代码时,我得到以下错误:

Traceback (most recent call last):
  File "scrollingPlot.py", line 88, in <module>
    app = MyApp()
  File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk2/wx/_core.py", line 8628, in __init__
    self._BootstrapApp()
  File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk2/wx/_core.py", line 8196, in _BootstrapApp
    return _core_.PyApp__BootstrapApp(*args, **kwargs)
  File "scrollingPlot.py", line 82, in OnInit
    self.frame = MyFrame(parent=None,id=-1)
  File "scrollingPlot.py", line 21, in __init__
    self.scroll_range)
  File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk2/wx/_core.py", line 11226, in SetScrollbar
    return _core_.Window_SetScrollbar(*args, **kwargs)
wx._core.PyAssertionError: C++ assertion "sb" failed at ../src/gtk/window.cpp(4754) in SetScrollbar(): this window is not scrollable
Run Code Online (Sandbox Code Playgroud)

PS:也欢迎其他解决方案(最好是python,R,或者简单的多平台)

PPS:我已经提到了上述错误的问题

Noe*_*raz 12

您是否考虑过使用matplotlib 滑块小部件

这里有一些代码,仅作为示例

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider

fig, ax = plt.subplots()
plt.subplots_adjust(bottom=0.25)

t = np.arange(0.0, 100.0, 0.1)
s = np.sin(2*np.pi*t)
l, = plt.plot(t,s)
plt.axis([0, 10, -1, 1])

axcolor = 'lightgoldenrodyellow'
axpos = plt.axes([0.2, 0.1, 0.65, 0.03], axisbg=axcolor)

spos = Slider(axpos, 'Pos', 0.1, 90.0)

def update(val):
    pos = spos.val
    ax.axis([pos,pos+10,-1,1])
    fig.canvas.draw_idle()

spos.on_changed(update)

plt.show()
Run Code Online (Sandbox Code Playgroud)