code: """
  ===============
  Embedding In Tk
  ===============
  
  """
  
  from six.moves import tkinter as Tk
  
  from matplotlib.backends.backend_tkagg import (
      FigureCanvasTkAgg, NavigationToolbar2TkAgg)
  # Implement the default Matplotlib key bindings.
  from matplotlib.backend_bases import key_press_handler
  from matplotlib.figure import Figure
  from six.moves import tkinter as Tk
  
  import numpy as np
  
  
  root = Tk.Tk()
  root.wm_title("Embedding in Tk")
  
  fig = Figure(figsize=(5, 4), dpi=100)
  t = np.arange(0, 3, .01)
  fig.add_subplot(111).plot(t, 2 * np.sin(2 * np.pi * t))
  
  canvas = FigureCanvasTkAgg(fig, master=root)  # A tk.DrawingArea.
  canvas.draw()
  canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
  
  toolbar = NavigationToolbar2TkAgg(canvas, root)
  toolbar.update()
  canvas._tkcanvas.pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
  
  
  def on_key_press(event):
      print("you pressed {}".format(event.key))
      key_press_handler(event, canvas, toolbar)
  
  
  canvas.mpl_connect("key_press_event", on_key_press)
  
  
  def _quit():
      root.quit()     # stops mainloop
      root.destroy()  # this is necessary on Windows to prevent
                      # Fatal Python Error: PyEval_RestoreThread: NULL tstate
  
  
  button = Tk.Button(master=root, text="Quit", command=_quit)
  button.pack(side=Tk.BOTTOM)
  
  Tk.mainloop()
  # If you put root.destroy() here, it will cause an error if the window is
  # closed with the window manager.
  
apis: numpy.sin matplotlib.figure.Figure matplotlib.backends.backend_tkagg.FigureCanvasTkAgg matplotlib.backend_bases.key_press_handler numpy.arange matplotlib.backends.backend_tkagg.NavigationToolbar2TkAgg