我正在尝试交互式移动一条垂直线以可视化平分一些绘制的数据,但我似乎无法显示调整后的线......
import Tkinter
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
class App:
def __init__(self, master, increment=.2, height=10):
self.increment = increment
# Create a container
frame = Tkinter.Frame(master)
# Make buttons...
self.button_left = Tkinter.Button(frame,text="< Move Left",
command=self.move_left)
self.button_left.pack(side="left")
self.button_right = Tkinter.Button(frame,text="Move Right >",
command=self.move_right)
self.button_right.pack(side="left")
fig = Figure()
ax = fig.add_subplot(111)
x = [3]*height
y = range(height)
#so that it's a tuple
self.line, = ax.plot(x, y)
self.canvas = FigureCanvasTkAgg(fig, master=master)
self.canvas.show()
self.canvas.get_tk_widget().pack(side='top', fill='both', expand=1)
frame.pack()
def move_left(self):
x, y = self.line.get_data()
self.line.set_xdata(x-self.increment)
x, y = self.line.get_data()
print "x: {0}".format(x)
print "y: {0}".format(y)
#self.canvas.draw()
self.canvas.blit()
def move_right(self):
x, y = self.line.get_data()
self.line.set_xdata(x+self.increment)
x, y = self.line.get_data()
print "x: {0}".format(x)
print "y: {0}".format(y)
#self.canvas.draw()
self.canvas.blit()
root = Tkinter.Tk()
app = App(root)
root.mainloop()
我在这里看过乔·金斯顿的答案,但是当我最初为 plot() 提供 x 和 y 坐标时,事情似乎出错了......
好吧,现在我理所当然地感到尴尬。 这条线刚刚移出可见区域。 我只需要更改增量值或使用set_xlim()
设置一个更大的可见窗口
哎呀!