最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于matplotlib+tkinter實(shí)現(xiàn)簡單的繪圖系統(tǒng)

 更新時間:2023年08月08日 08:30:00   作者:微小冷  
在理解matplotlib嵌入到tkinter中的原理之后,就已經(jīng)具備了打造繪圖系統(tǒng)的技術(shù)基礎(chǔ),所以本文來實(shí)現(xiàn)一個簡單的繪圖系統(tǒng),感興趣的小伙伴小伙伴可以了解一下

繪圖系統(tǒng)系列:python將matplotlib嵌入到tkinter中的步驟詳解

封裝成類

在理解matplotlib嵌入到tkinter中的原理之后,就已經(jīng)具備了打造繪圖系統(tǒng)的技術(shù)基礎(chǔ),接下來要做的,就是做一個較有可讀性的繪圖類,其實(shí)就是把前面的代碼封裝到class里而已,代碼如下

import tkinter as tk
import tkinter.ttk as ttk
import matplotlib as mpl
mpl.use('TkAgg')
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import (
    FigureCanvasTkAgg, NavigationToolbar2Tk)
from matplotlib.figure import Figure
class DarwSystem():
    def __init__(self):
        self.root = tk.Tk()
        self.root.title("數(shù)據(jù)展示工具")
        frmCtrl = ttk.Frame(self.root,width=320)
        frmCtrl.pack(side=tk.RIGHT)
        self.setFrmCtrl(frmCtrl)
        frmFig = ttk.Frame(self.root)
        frmFig.pack(side=tk.LEFT,fill=tk.BOTH,expand=tk.YES)
        self.setFrmFig(frmFig)
        self.root.mainloop()
    def setFrmCtrl(self, frmCtrl):
        pass
    def setFrmFig(self, frmFig):
        self.fig = Figure()
        self.canvas = FigureCanvasTkAgg(self.fig,frmFig)
        self.canvas.get_tk_widget().pack(
            side=tk.TOP,fill=tk.BOTH,expand=tk.YES)
        self.toolbar = NavigationToolbar2Tk(self.canvas,frmFig,
            pack_toolbar=False)
        self.toolbar.update()
        self.toolbar.pack(side=tk.RIGHT)

其中,setFrmCtrl用于設(shè)置控制面板,暫且pass掉,但后續(xù)會實(shí)現(xiàn)諸多功能;setFrmFig用于設(shè)置繪圖界面,其中self.fig就是繪圖窗口,后續(xù)若要畫圖,都要在這里設(shè)置坐標(biāo)軸。

布局

最簡單的繪圖系統(tǒng),也至少需要三個部件,分別用于輸入x值、y值以及點(diǎn)擊繪圖按鈕,從而setFrmCtrl函數(shù)可以先寫為下面的形式

def setFrmCtrl(self, frmCtrl):
    frm = ttk.Frame(frmCtrl)
    frm.pack(side=tk.TOP, fill=tk.X)
    self.setCtrlButtons(frm)
    frm = ttk.Frame(frmCtrl)
    frm.pack(side=tk.TOP, fill=tk.X)
    self.setFrmX(frm)
    frm = ttk.Frame(frmCtrl)
    frm.pack(side=tk.TOP, fill=tk.X)
    self.setFrmY(frm)

這里面總計(jì)用了3個frm,分別用于存放控制按鈕,設(shè)置x數(shù)據(jù)和y數(shù)據(jù)的模塊,這三個模塊的布局又分別設(shè)計(jì)了三個函數(shù),即setFrmX, setFrmY以及setCtrlButtons:

def setFrmX(self, frm):
    tk.Label(frm, text="x").pack(side=tk.LEFT)
    self.xEntry = tk.Entry(frm)
    self.xEntry.pack(side=tk.LEFT, fill=tk.X)
def setFrmY(self, frm):
    tk.Label(frm, text="y").pack(side=tk.LEFT)
    self.yEntry = tk.Entry(frm)
    self.yEntry.pack(side=tk.LEFT, fill=tk.X)
def setCtrlButtons(self, frm):
    tk.Button(frm, text="繪圖",width=5,
        command=self.btnDrawImg).pack(side=tk.LEFT)
# 繪圖函數(shù)
def btnDrawImg(self):
    pass

其中btnDrawImg是繪圖函數(shù),尚未實(shí)現(xiàn),所以被pass掉了,此時的布局結(jié)果如下,非常簡單

實(shí)現(xiàn)繪圖功能

接下來就是最核心的功能,實(shí)現(xiàn)繪圖,主要包括兩個步驟,一是讀取x和y的值,二是用二者的值完成圖像的繪制。

簡單起見,這里用eval函數(shù)直接讀取python表達(dá)式,同時為了讓不熟悉Python的人也可以順利生成x序列,將np.linspace隱去。則xEntry和yEntry的讀取過程可寫為

def btnDrawImg(self):
    x = eval(f"np.linspace({self.xEntry.get()})")
    self.ys = eval(self.yEntry.get())
    self.xs = x
    self.drawPlot()

self.drawPlot就是核心的繪圖函數(shù),主要流程與命令行調(diào)用plt如出一轍,首先創(chuàng)建一個坐標(biāo)軸,然后在坐標(biāo)軸上繪圖,區(qū)別是最后需要調(diào)用self.canvas中的引擎來完成圖像繪制

def drawPlot(self):
    self.fig.clf()
    ax = self.fig.add_subplot()
    ax.plot(self.xs, self.ys)
    self.fig.subplots_adjust(left=0.1, right=0.95, top=0.95, bottom=0.08)
    self.canvas.draw()

結(jié)果如下

狀態(tài)欄的這些工具都可以無縫使用,非常便捷。

到此這篇關(guān)于基于matplotlib+tkinter實(shí)現(xiàn)簡單的繪圖系統(tǒng)的文章就介紹到這了,更多相關(guān)matplotlib tkinter繪圖系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • windows環(huán)境中利用celery實(shí)現(xiàn)簡單任務(wù)隊(duì)列過程解析

    windows環(huán)境中利用celery實(shí)現(xiàn)簡單任務(wù)隊(duì)列過程解析

    這篇文章主要介紹了windows環(huán)境中利用celery實(shí)現(xiàn)簡單任務(wù)隊(duì)列過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • PyCharm運(yùn)行環(huán)境切換過程

    PyCharm運(yùn)行環(huán)境切換過程

    文章介紹了如何在PyCharm中切換到Anaconda環(huán)境以運(yùn)行代碼,具體步驟包括:進(jìn)入設(shè)置,選擇項(xiàng)目解釋器,添加現(xiàn)有環(huán)境,并選擇Anaconda環(huán)境中的python.exe文件路徑
    2026-02-02
  • Google開源的Python格式化工具YAPF的安裝和使用教程

    Google開源的Python格式化工具YAPF的安裝和使用教程

    Google的開發(fā)者文檔中有一套Python的代碼書寫規(guī)范,而在GitHub上同樣開源了一款名為YAPF的命令行程序用作Python的格式化,下面我們就來看下這款Google開源的Python格式化工具YAPF的安裝和使用教程
    2016-05-05
  • 夯實(shí)基礎(chǔ)Python列表的索引和切片使用示例

    夯實(shí)基礎(chǔ)Python列表的索引和切片使用示例

    這篇文章主要為大家介紹了Python列表的索引和切片使用示例基礎(chǔ)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • python線性插值解析

    python線性插值解析

    這篇文章主要介紹了python線性插值解析,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • pyd文件逆向的方法實(shí)現(xiàn)

    pyd文件逆向的方法實(shí)現(xiàn)

    pyd文件是由非 Python,其它編程語言編寫編譯生成的 Python 擴(kuò)展模塊,本文主要介紹了pyd文件逆向的方法實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Python3 sort和sorted用法+cmp_to_key()函數(shù)詳解

    Python3 sort和sorted用法+cmp_to_key()函數(shù)詳解

    這篇文章主要介紹了Python3 sort和sorted用法+cmp_to_key()函數(shù)詳解,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • python如何做代碼性能分析

    python如何做代碼性能分析

    這篇文章主要介紹了python如何做代碼性能分析,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • Python編程深度學(xué)習(xí)繪圖庫之matplotlib

    Python編程深度學(xué)習(xí)繪圖庫之matplotlib

    今天小編就為大家分享一篇關(guān)于Python編程深度學(xué)習(xí)繪圖庫之matplotlib,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Python七種距離度量方法全解析

    Python七種距離度量方法全解析

    這篇文章主要介紹了Python七種距離度量方法的相關(guān)資料,包括曼哈頓距離、歐氏距離、切比雪夫距離和明科夫斯基距離,并提供每種距離的具體計(jì)算示例及其應(yīng)用場景,幫助大家更好地理解距離度量,需要的朋友可以參考下
    2026-01-01

最新評論

老河口市| 乾安县| 呼玛县| 行唐县| 和龙市| 新昌县| 新蔡县| 清远市| 宁津县| 桂平市| 博兴县| 金川县| 高陵县| 阿坝县| 阳原县| 临泉县| 双流县| 堆龙德庆县| 荣昌县| 甘肃省| 加查县| 莒南县| 海伦市| 乌海市| 习水县| 台山市| 阿尔山市| 定安县| 波密县| 车致| 荔波县| 龙泉市| 仪征市| 米泉市| 宜川县| 兰西县| 信阳市| 三亚市| 太仆寺旗| 平度市| 山丹县|