带有 scalable/updatable x 轴的 Matplotlib 图

Matplotlib plot with scalable/updatable x-axis

是否可以创建一个滑块可以更新 x 轴的 length/location 的绘图?

Here 是所需滑块类型的示例。

可以找到一个有点类似的 matplotlib 滑块 here。不幸的是,如您所见,没有 documentation/explanation 它是如何工作的 - 这使得 understand/adapt!

变得相当困难

我想添加的情节类型非常简单,这里是一个随机的小例子:

import matplotlib.pyplot as plt
import random

li = []
for x in xrange(100):
    li.append(random.randint(0,20))  

plt.plot(li)
plt.show()

这里有一些可以帮助您入门的东西。它直接改编自您在 matplotlib 文档中的第二个示例 - 使用滑块更新绘图边界,而不是缩放数据。

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

fig, ax = plt.subplots()
plt.subplots_adjust(bottom=0.25)
t = np.arange(0.0, 1.0, 0.001)
s = np.sin(5*np.pi*t)
l, = plt.plot(t,s)

viewwindow = 0.1

axpos = plt.axes([0.25, 0.1, 0.65, 0.03])
axslider = Slider(axpos, '', t[0]+viewwindow, t[-1]-viewwindow, valinit=(t[-1]+t[0])/2.0)

def update(val):
    new_pos = axslider.val
    ax.set_xbound(new_pos-viewwindow, new_pos+viewwindow)
    fig.canvas.draw_idle()

update(axslider.val)
axslider.on_changed(update)

plt.show()