91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在matplotlib中實現一個交互式數據光標效果

發布時間:2021-01-13 14:26:03 來源:億速云 閱讀:506 作者:Leah 欄目:開發技術

這篇文章給大家介紹怎么在matplotlib中實現一個交互式數據光標效果,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

簡介

mplcursors包也可以為matplotlib提供交互式的數據光標(彈出式注釋框),它的靈感來源于mpldatacursor包,可以認為是基于mpldatacursor包的二次開發。
相對于mpldatacursor包,mplcursors包最大的特點就是提供了一些相對底層的API,這樣功能實現更加靈活。

安裝

pip install mplcursors

基本應用

mplcursors包的基本應用方法與mpldatacursor包類似,直接應用cursor函數即可。

基本操作方法

  • 鼠標左鍵單擊圖表數據元素時會彈出文本框顯示最近的數據元素的坐標值。

  • 鼠標右鍵單擊文本框取消顯示數據光標。

  • 按d鍵時切換顯示\關閉數據光標。

案例源碼

import matplotlib.pyplot as plt
import numpy as np
import mplcursors

data = np.outer(range(10), range(1, 5))

fig, ax = plt.subplots()
lines = ax.plot(data)
ax.set_title("Click somewhere on a line.\nRight-click to deselect.\n"
       "Annotations can be dragged.")

mplcursors.cursor(lines) # or just mplcursors.cursor()

plt.show()

mplcursors自定義應用

mpldatacursor包中自定義功能主要通過向datacursor函數傳遞實參實現。
mplcursors包中的cursor函數對標mpldatacursor包中的datacursor函數,但是在參數上發生了變化,保留了artistshoverbindingsmultiplehighlight等類似參數。
mplcursors包增加Selection對象(底層為namedtuple)表示選擇的數據元素的屬性。
當選中某個數據點時,可以通過添加(add)或刪除(remove)事件觸發、注冊回調函數實現功能,回調函數只有一個參數,及選擇的數據點。
在注冊回調函數時,mplcursors包支持使用裝飾器。

mpldatacursor與mplcursors API對比

下面以修改顯示文本信息為例對比下mpldatacursormplcursors的不同實現方式。

怎么在matplotlib中實現一個交互式數據光標效果

mpldatacursor實現方式

import matplotlib.pyplot as plt
import numpy as np
from mpldatacursor import datacursor

ax=plt.gca()
labels = ["a", "b", "c"]
for i in range(3):
  ax.plot(i, i,'o', label=labels[i])

datacursor(formatter='{label}'.format)
plt.show()

mplcursors實現方式一

import matplotlib.pyplot as plt
import numpy as np
import mplcursors

ax=plt.gca()
lines = ax.plot(range(3), range(3), "o")
labels = ["a", "b", "c"]
cursor = mplcursors.cursor(lines)
cursor.connect(
  "add", lambda sel: sel.annotation.set_text(labels[sel.target.index]))

plt.show()

mplcursors實現方式二

import matplotlib.pyplot as plt
import numpy as np
import mplcursors

ax=plt.gca()
lines = ax.plot(range(3), range(3), "o")
labels = ["a", "b", "c"]
cursor = mplcursors.cursor(lines)

@cursor.connect("add")
def on_add(sel):
  sel.annotation.set_text(labels[sel.target.index])
plt.show()

結論

mplcursors包實現的功能與mpldatacursor包非常相似。相對而言mplcursors包的API更加靈活,通過connect函數或者裝飾器自定義屬性耦合性更弱,便于實現繪圖與數據光標實現的分離。

關于怎么在matplotlib中實現一個交互式數據光標效果就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

曲松县| 江口县| 巨野县| 大邑县| 安康市| 潞西市| 新邵县| 廊坊市| 吐鲁番市| 左贡县| 牡丹江市| 石林| 镇江市| 寿阳县| 海城市| 元朗区| 建昌县| 上饶市| 筠连县| 宾川县| 山阳县| 阿勒泰市| 齐齐哈尔市| 福建省| 建始县| 宁南县| 张掖市| 五寨县| 肃宁县| 岐山县| 呈贡县| 从化市| 嘉祥县| 三河市| 平塘县| 兰溪市| 苏尼特左旗| 台南县| 建始县| 定西市| 库伦旗|