13

私のコードは、matplotib を使用してデータから多数のプロットを生成します。ライブ デモンストレーションでそれらを前後にスクロールできるようにしたいと考えています (前後のキーを押すか、マウスを使用するなど)。現在、それぞれを個別に画像として保存し、個別の画像ビューアを使用してそれらをスクロールする必要があります。Python内からこれを完全に行う方法はありますか?

4

1 に答える 1

22

これを実現する簡単な方法は、x 配列と y 配列のタプルをリストに格納し、次にプロットする (x,y) ペアを選択するハンドラー イベントを使用することです。

import numpy as np
import matplotlib.pyplot as plt

# define your x and y arrays to be plotted
t = np.linspace(start=0, stop=2*np.pi, num=100)
y1 = np.cos(t)
y2 = np.sin(t)
y3 = np.tan(t)
plots = [(t,y1), (t,y2), (t,y3)]

# now the real code :) 
curr_pos = 0

def key_event(e):
    global curr_pos

    if e.key == "right":
        curr_pos = curr_pos + 1
    elif e.key == "left":
        curr_pos = curr_pos - 1
    else:
        return
    curr_pos = curr_pos % len(plots)

    ax.cla()
    ax.plot(plots[curr_pos][0], plots[curr_pos][1])
    fig.canvas.draw()

fig = plt.figure()
fig.canvas.mpl_connect('key_press_event', key_event)
ax = fig.add_subplot(111)
ax.plot(t,y1)
plt.show()

このコードでは、rightとのleft矢印を選択して繰り返しますが、これらは変更できます。

于 2013-08-22T21:20:34.747 に答える