我已经在这方面工作了一段时间,但我似乎无法克服它。问题是我想在tkinter窗口中插入一个矢量表示。我设法将线条和功能绘制到tkinter中,但是矢量是一个完全不同的故事。 这是我到目前为止嵌入的代码:
import matplotlib
matplotlib.use('TkAgg')
from numpy import arange, sin, pi
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.backend_bases import key_press_handler
from matplotlib.figure import Figure
import tkinter as Tk
root = Tk.Tk()
root.wm_title("Embedding in TK")
f = Figure(figsize=(5, 4), dpi=100)
a = f.add_subplot(111)
a.plot([7,8], [2, 4])
canvas = FigureCanvasTkAgg(f, master=root)
canvas.show()
canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
Tk.mainloop()
绘制矢量的代码:
import matplotlib.pyplot as plt
import numpy as np
import tkinter as Tk
v1 = (3, -4)
v2 = (-6,4, 10)
soa = np.array([[0, 0, v1[0], v1[1]], [0, 0, v2[0], v2[1]]])
X, Y, U, V = zip(*soa)
plt.figure()
ax = plt.gca()
ax.quiver(X, Y, U, V, angles='xy', scale_units='xy', scale=1)
ax.set_xlim([-10, 10])
ax.set_ylim([-5, 11])
plt.draw()
plt.show()
Tk.mainloop()
也许有办法合并这两个?
答案 0 :(得分:0)
我认为您可以从matplotlib页面上阅读更多内容并查看示例中获益。那么你就会让自己变得比实际需要的更难。首先类似地调用类似的东西。在第一种情况下,您有一个轴a
,在第二种情况下,您将其称为ax
,appart唯一的区别是您需要.plot
代替.quiver
plt.show
。您不需要canvas.show()
,因为您有import matplotlib
matplotlib.use('TkAgg')
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import numpy as np
from matplotlib.figure import Figure
import tkinter as Tk
root = Tk.Tk()
root.wm_title("Embedding in TK")
f = Figure(figsize=(5, 4), dpi=100)
ax = f.add_subplot(111)
v1 = (3, -4)
v2 = (-6,4, 10)
soa = np.array([[0, 0, v1[0], v1[1]], [0, 0, v2[0], v2[1]]])
X, Y, U, V = zip(*soa)
ax.quiver(X, Y, U, V, angles='xy', scale_units='xy', scale=1)
ax.set_xlim([-10, 10])
ax.set_ylim([-5, 11])
canvas = FigureCanvasTkAgg(f, master=root)
canvas.show()
canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
Tk.mainloop()
。
{{1}}