簡體   English   中英

將矢量圖嵌入Tkinter

[英]Embed vector plot into Tkinter

我已經為此工作了一段時間,但似乎無法克服。 問題是我想在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()

也許有一種方法可以合並這兩個?

我認為您可以從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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM