您好,登錄后才能下訂單哦!
這篇文章給大家介紹怎么在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()
mpldatacursor
包中自定義功能主要通過向datacursor
函數傳遞實參實現。mplcursors
包中的cursor
函數對標mpldatacursor
包中的datacursor
函數,但是在參數上發生了變化,保留了artists
、hover
、bindings
、multiple
、highlight
等類似參數。mplcursors
包增加Selection
對象(底層為namedtuple
)表示選擇的數據元素的屬性。
當選中某個數據點時,可以通過添加(add
)或刪除(remove
)事件觸發、注冊回調函數實現功能,回調函數只有一個參數,及選擇的數據點。
在注冊回調函數時,mplcursors
包支持使用裝飾器。
下面以修改顯示文本信息為例對比下mpldatacursor
與mplcursors
的不同實現方式。
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中實現一個交互式數據光標效果就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。