Plotting the data with scrollable x (time/horizontal) axis on Linux

20,533

Have you considered using matplotlib slider widgets?

Here is a little code just to show as example

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], facecolor=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()
Share:
20,533

Related videos on Youtube

Wakan Tanka
Author by

Wakan Tanka

Enthusiastic and passionate for computers and technology, my workhorses: perl, bash, python, tcl/tk, R. LaTeX, Unix

Updated on December 16, 2020

Comments

  • Wakan Tanka
    Wakan Tanka over 3 years

    I want to plot data where x axis is long. If I plot the whole x axis then the plot shrinks and it is almost unreadable. I've found this answer on SO which points to following scipy/matplotlib code. But When I try to run the mentioned code I get following error:

    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
    

    PS: Other solutions are also welcomed (preferably python, R, or something simple and multi platform)

    PPS: I've opened the issue for mentioned error

  • Wakan Tanka
    Wakan Tanka almost 9 years
    This is the solution I was looking for. Thank you
  • Wakan Tanka
    Wakan Tanka almost 9 years
    Thank you, this is interesting idea. It might come handy if matplotlib is not available otherwise the @Noel Segura solution seems fine.