本篇文章給大家分享的是有關(guān)如何在matplotlib中使用Lasso部件,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、丁青網(wǎng)站維護(hù)、網(wǎng)站推廣。套索(Lasso)是與套索選區(qū)(LassoSelector)相似的matplotlib部件(widgets),兩者的區(qū)別主要在于:
繼承關(guān)系:
套索具體實(shí)現(xiàn)定義為matplotlib.widgets.Lasso類,繼承關(guān)系為:Widget->AxesWidget->Lasso。
套索選區(qū)具體實(shí)現(xiàn)定義為matplotlib.widgets.LassoSelector類,繼承關(guān)系為:Widget->AxesWidget->_SelectorWidget->LassoSelector。
構(gòu)造參數(shù):
Lasso類的簽名為class matplotlib.widgets.Lasso(ax, xy, callback=None, useblit=True),Lasso類需要給定套索一個(gè)起始的坐標(biāo)。
LassoSelector類的簽名為class matplotlib.widgets.LassoSelector(ax, onselect=None, useblit=True, lineprops=None, button=None)。
事件處理:
Lasso事件在鼠標(biāo)釋放時(shí)即被銷毀。
LassoSelector在鼠標(biāo)釋放時(shí)仍然可以繼續(xù)與子圖交互,直到斷開與子圖的連接。
Lasso類構(gòu)造函數(shù)的參數(shù)為:
ax:套索生效的子圖,類型為matplotlib.axes.Axes的實(shí)例。
xy:套索起始的坐標(biāo)。
callback:套索完成即鼠標(biāo)釋放時(shí)執(zhí)行的回調(diào)函數(shù),函數(shù)簽名為def func(verts),verts的為套索端點(diǎn)的坐標(biāo)列表。
套索可以使用matplotlib.path.Path類的contains_point方法獲取選區(qū)內(nèi)的數(shù)據(jù)點(diǎn)。
貌似 Lasso是實(shí)驗(yàn)性API,還不夠完善,matplotlib 3.3之后可能逐步廢棄 Lasso。
官方案例,https://matplotlib.org/3.2.1/gallery/event_handling/lasso_demo.html
案例說明
from matplotlib import colors as mcolors, path from matplotlib.collections import RegularPolyCollection import matplotlib.pyplot as plt from matplotlib.widgets import Lasso import numpy as np class Datum: colorin = mcolors.to_rgba("red") colorout = mcolors.to_rgba("blue") def __init__(self, x, y, include=False): self.x = x self.y = y if include: self.color = self.colorin else: self.color = self.colorout class LassoManager: def __init__(self, ax, data): self.axes = ax self.canvas = ax.figure.canvas self.data = data self.Nxy = len(data) facecolors = [d.color for d in data] self.xys = [(d.x, d.y) for d in data] self.collection = RegularPolyCollection( 6, sizes=(100,), facecolors=facecolors, offsets=self.xys, transOffset=ax.transData) ax.add_collection(self.collection) self.cid = self.canvas.mpl_connect('button_press_event', self.onpress) def callback(self, verts): facecolors = self.collection.get_facecolors() p = path.Path(verts) ind = p.contains_points(self.xys) for i in range(len(self.xys)): if ind[i]: facecolors[i] = Datum.colorin else: facecolors[i] = Datum.colorout self.canvas.draw_idle() self.canvas.widgetlock.release(self.lasso) del self.lasso def onpress(self, event): if self.canvas.widgetlock.locked(): return if event.inaxes is None: return self.lasso = Lasso(event.inaxes, (event.xdata, event.ydata), self.callback) # acquire a lock on the widget drawing self.canvas.widgetlock(self.lasso) if __name__ == '__main__': np.random.seed(19680801) data = [Datum(*xy) for xy in np.random.rand(100, 2)] ax = plt.axes(xlim=(0, 1), ylim=(0, 1), autoscale_on=False) ax.set_title('Lasso points using left mouse button') lman = LassoManager(ax, data) plt.show()
案例的關(guān)鍵代碼在于LassoManager類的onpress方法和callback方法。由于Lasso類在事件處理上比較原始,需要用戶進(jìn)行控制,在鼠標(biāo)按下、釋放事件中需要使用canvas.widgetlock對(duì)象鎖定/解鎖繪圖功能,保證只有一個(gè)對(duì)象進(jìn)行繪圖,canvas.widgetlock是matplotlib.widgets.LockDraw類的實(shí)例。
以上就是如何在matplotlib中使用Lasso部件,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁名稱:如何在matplotlib中使用Lasso部件-創(chuàng)新互聯(lián)
URL地址:http://www.rwnh.cn/article44/ddsghe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、網(wǎng)站策劃、搜索引擎優(yōu)化、標(biāo)簽優(yōu)化、自適應(yīng)網(wǎng)站、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容