這篇文章給大家介紹怎么在matplotlib中實現一個交互式數據光標效果,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
為吉首等地區(qū)用戶提供了全套網頁設計制作服務,及吉首網站建設行業(yè)解決方案。主營業(yè)務為成都網站建設、網站設計、吉首網站設計,以傳統(tǒng)方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!mplcursors
包也可以為matplotlib
提供交互式的數據光標(彈出式注釋框),它的靈感來源于mpldatacursor
包,可以認為是基于mpldatacursor
包的二次開發(fā)。
相對于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
函數,但是在參數上發(fā)生了變化,保留了artists
、hover
、bindings
、multiple
、highlight
等類似參數。mplcursors
包增加Selection
對象(底層為namedtuple
)表示選擇的數據元素的屬性。
當選中某個數據點時,可以通過添加(add
)或刪除(remove
)事件觸發(fā)、注冊回調函數實現功能,回調函數只有一個參數,及選擇的數據點。
在注冊回調函數時,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中實現一個交互式數據光標效果就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
網頁標題:怎么在matplotlib中實現一個交互式數據光標效果-創(chuàng)新互聯(lián)
文章路徑:http://m.newbst.com/article10/cogedo.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供關鍵詞優(yōu)化、小程序開發(fā)、ChatGPT、網站營銷、服務器托管、云服務器
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)