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

matplotlib部件之套索Lasso的使用

 更新時間:2021年02月24日 12:03:12   作者:mighty13  
這篇文章主要介紹了matplotlib部件之套索Lasso的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

套索概述

套索(Lasso)是與套索選區(qū)(LassoSelector)相似的matplotlib部件(widgets),兩者的區(qū)別主要在于:

繼承關(guān)系:

  • 套索具體實現(xiàn)定義為matplotlib.widgets.Lasso類,繼承關(guān)系為:Widget->AxesWidget->Lasso。
  • 套索選區(qū)具體實現(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類需要給定套索一個起始的坐標(biāo)。
  • LassoSelector類的簽名為class matplotlib.widgets.LassoSelector(ax, onselect=None, useblit=True, lineprops=None, button=None)。

事件處理:

  • Lasso事件在鼠標(biāo)釋放時即被銷毀。
  • LassoSelector在鼠標(biāo)釋放時仍然可以繼續(xù)與子圖交互,直到斷開與子圖的連接。

Lasso類構(gòu)造函數(shù)的參數(shù)為:

  • ax:套索生效的子圖,類型為matplotlib.axes.Axes的實例。
  • xy:套索起始的坐標(biāo)。
  • callback:套索完成即鼠標(biāo)釋放時執(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是實驗性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對象鎖定/解鎖繪圖功能,保證只有一個對象進(jìn)行繪圖,canvas.widgetlock是matplotlib.widgets.LockDraw類的實例。

總結(jié)

盡量使用套索選區(qū)(LassoSelector)而不是套索(Lasso),兩者功能相似,索選區(qū)(LassoSelector)使用相對更簡單一些,套索(Lasso)還有一些BUG,matplotlib 3.3已不再推薦使用。

到此這篇關(guān)于matplotlib部件之套索Lasso的使用的文章就介紹到這了,更多相關(guān)matplotlib 套索內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 微信跳一跳python輔助軟件思路及圖像識別源碼解析

    微信跳一跳python輔助軟件思路及圖像識別源碼解析

    這篇文章主要介紹了微信跳一跳python輔助軟件思路及圖像識別源碼解析,需要的朋友可以參考下
    2018-01-01
  • Python尋找兩個有序數(shù)組的中位數(shù)實例詳解

    Python尋找兩個有序數(shù)組的中位數(shù)實例詳解

    這篇文章主要介紹了Python尋找兩個有序數(shù)組的中位數(shù),本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-12-12
  • Python繪制分形圖案探索無限細(xì)節(jié)和奇妙之美

    Python繪制分形圖案探索無限細(xì)節(jié)和奇妙之美

    本文將介紹如何使用Python繪制各種分形圖案,包括分形樹、科赫曲線、曼德博集合等。通過本文讀者可以了解分形圖案的基本概念和構(gòu)造方法,并學(xué)會使用Python繪制出各種精美的分形圖案。本文還提供了具體的代碼示例和實踐案例,幫助讀者更好地理解分形圖案的奇妙之美
    2023-04-04
  • 用python擬合等角螺線的實現(xiàn)示例

    用python擬合等角螺線的實現(xiàn)示例

    這篇文章主要介紹了用python擬合等角螺線的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Python eval的常見錯誤封裝及利用原理詳解

    Python eval的常見錯誤封裝及利用原理詳解

    這篇文章主要介紹了Python eval的常見錯誤封裝及利用原理詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • scrapy-redis源碼分析之發(fā)送POST請求詳解

    scrapy-redis源碼分析之發(fā)送POST請求詳解

    這篇文章主要給大家介紹了關(guān)于scrapy-redis源碼分析之發(fā)送POST請求的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用scrapy-redis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python中的模型建模與選擇策略詳解

    Python中的模型建模與選擇策略詳解

    本文詳細(xì)介紹了模型選擇、超參數(shù)調(diào)優(yōu)、特征工程和模型融合在機(jī)器學(xué)習(xí)中的重要性和具體方法,通過這些步驟,我們可以提高模型的準(zhǔn)確性和泛化能力,從而在實際應(yīng)用中取得更好的效果,每個部分都提供了理論知識和實際案例,幫助讀者更好地理解和應(yīng)用這些技術(shù)
    2025-01-01
  • Python實現(xiàn)批量修改Word文檔中圖片大小并居中對齊

    Python實現(xiàn)批量修改Word文檔中圖片大小并居中對齊

    這篇文章主要介紹了如何利用Python實現(xiàn)批量修改Word文檔中圖片大小并居中對齊,文中通過代碼示例給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-08-08
  • python獲取域名ssl證書信息和到期時間

    python獲取域名ssl證書信息和到期時間

    這篇文章主要為大家詳細(xì)介紹了如何利用python實現(xiàn)獲取域名ssl證書信息和到期時間,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-09-09
  • Python 高級教程之線程進(jìn)程和協(xié)程的代碼解析

    Python 高級教程之線程進(jìn)程和協(xié)程的代碼解析

    這篇文章主要介紹了Python 高級教程之線程進(jìn)程和協(xié)程的代碼解析,包括使用線程模塊的簡單示例,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05

最新評論

凭祥市| 永川市| 万全县| 菏泽市| 荔浦县| 阳东县| 姚安县| 福安市| 淮南市| 金堂县| 白朗县| 金昌市| 蕉岭县| 连州市| 丹阳市| 屯昌县| 济阳县| 安乡县| 乌鲁木齐县| 武清区| 疏勒县| 视频| 景德镇市| 镇江市| 航空| 盖州市| 奉贤区| 扬中市| 岚皋县| 涿鹿县| 德州市| 彭阳县| 临沧市| 清涧县| 额尔古纳市| 博客| 甘肃省| 梁河县| 昭通市| 眉山市| 宁陕县|