亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python中matplotlib實(shí)現(xiàn)隨鼠標(biāo)滑動(dòng)自動(dòng)標(biāo)注代碼

瀏覽:80日期:2022-07-29 10:31:58

Python+matplotlib進(jìn)行鼠標(biāo)交互,實(shí)現(xiàn)動(dòng)態(tài)標(biāo)注,數(shù)據(jù)可視化顯示,鼠標(biāo)劃過(guò)時(shí)畫(huà)一條豎線并使用標(biāo)簽來(lái)顯示當(dāng)前值。

Python3.6.5,代碼示例:

import matplotlib.pyplot as pltimport numpy as npdef Show(y):#參數(shù)為一個(gè)listlen_y = len(y)x = range(len_y)_y = [y[-1]]*len_yfig = plt.figure(figsize=(960/72,360/72))ax1 = fig.add_subplot(1,1,1)ax1.plot(x, y, color=’blue’)line_x = ax1.plot(x, _y, color=’skyblue’)[0]line_y = ax1.axvline(x=len_y-1, color=’skyblue’)ax1.set_title(’aaa’)#標(biāo)簽text0 = plt.text(len_y-1,y[-1],str(y[-1]),fontsize = 10)def scroll(event):axtemp=event.inaxesx_min, x_max = axtemp.get_xlim()fanwei_x = (x_max - x_min) / 10if event.button == ’up’:axtemp.set(xlim=(x_min + fanwei_x, x_max - fanwei_x))elif event.button == ’down’:axtemp.set(xlim=(x_min - fanwei_x, x_max + fanwei_x))fig.canvas.draw_idle() #這個(gè)函數(shù)實(shí)時(shí)更新圖片的顯示內(nèi)容def motion(event):try:temp = y[int(np.round(event.xdata))]for i in range(len_y):_y[i] = templine_x.set_ydata(_y)line_y.set_xdata(event.xdata)######text0.set_position((event.xdata, temp))text0.set_text(str(temp))fig.canvas.draw_idle() # 繪圖動(dòng)作實(shí)時(shí)反映在圖像上except:passfig.canvas.mpl_connect(’scroll_event’, scroll)fig.canvas.mpl_connect(’motion_notify_event’, motion)plt.show()

效果演示:

python中matplotlib實(shí)現(xiàn)隨鼠標(biāo)滑動(dòng)自動(dòng)標(biāo)注代碼

補(bǔ)充知識(shí):matplotlib獲取鼠標(biāo)所在位置的axes

手頭的項(xiàng)目遇到一個(gè)問(wèn)題,如何獲取鼠標(biāo)所在位置的axes對(duì)應(yīng)的obspy.core.trace。在繪制axes時(shí),我設(shè)置了一個(gè)數(shù)組用來(lái)保存每一個(gè)trace所對(duì)應(yīng)的axes,這樣比較方便繪制標(biāo)簽。但我的項(xiàng)目需要對(duì)繪制的圖像做放大縮小以及拖拽,這需要我單獨(dú)對(duì)一個(gè)axes來(lái)進(jìn)行相應(yīng)的操作。那么如何通過(guò)axes來(lái)獲得對(duì)應(yīng)的trace呢?我想了這幾個(gè)辦法:

1.設(shè)置一個(gè)hash表,記錄每一個(gè)axes與trace的對(duì)應(yīng)情況,通過(guò)鼠標(biāo)操作傳入的event,可以得到當(dāng)前axes的引用地址,以這個(gè)引用地址作為關(guān)鍵字查找hash表,獲取對(duì)應(yīng)trace。

2.通過(guò)axes引用地址定位到mpl的axes數(shù)組,通過(guò)axes數(shù)組的下標(biāo)來(lái)訪問(wèn)繪制時(shí)設(shè)置的數(shù)組獲得trace。

3.獲取axes.label的內(nèi)容,作為關(guān)鍵字去遍歷obspy.core.stream,獲取trace。

4.通過(guò)event獲取鼠標(biāo)位置,在結(jié)合畫(huà)布大小通過(guò)計(jì)算得到數(shù)組下標(biāo),在訪問(wèn)繪制時(shí)設(shè)置的數(shù)組可以得到trace

前三種方法都不能保證一定能獲取到trace,并且有出錯(cuò)的風(fēng)險(xiǎn),但是如果可以實(shí)現(xiàn),可靠性是大于最后一種,但是最后一種實(shí)現(xiàn)起來(lái)是最簡(jiǎn)單的,明天我再思考如何通過(guò)matplotlib的鼠標(biāo)事件來(lái)獲取對(duì)應(yīng)的trace

后來(lái)發(fā)現(xiàn),可以采用第三種方法。訪問(wèn)event.inaxes來(lái)獲得

以上這篇python中matplotlib實(shí)現(xiàn)隨鼠標(biāo)滑動(dòng)自動(dòng)標(biāo)注代碼就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 免费国产小视频 | 久久久久国产一级毛片高清板 | 99精品亚洲 | 国产原创剧情在线 | 亚洲人成亚洲精品 | 国产精品亚洲二区 | 激情网址在线观看 | 最新国产午夜精品视频成人 | 亚洲无成人网77777 | 一级特黄aaa大片在线观看 | 免费超爽大片黄 | 九九在线精品视频xxx | 亚洲精品福利视频 | 国产这里只有精品 | 国内真实实拍伦视频在线观看 | 亚洲美女色在线欧洲美女 | 欧美日本黄色 | 国产黄色片免费看 | 免费黄色一级视频 | 在线播放亚洲美女视频网站 | 日本做爰免费大片视频 | xvideos亚洲网站入口 | 日韩视频在线观看免费 | 成人免费视频网站 | 国产性夜夜性夜夜爽91 | 国产丶欧美丶日韩丶不卡影视 | 在线观看精品国语偷拍 | 仑乱高清在线一级播放 | 国产免费破外女真实出血视频 | 国产精品亚洲欧美日韩区 | 五月伊人网 | 亚洲欧美视频一区二区三区 | 免费看日日麻批免费视频播放 | 91精品视频网| 来个黄色网址 | 一级毛片ab片高清毛片 | 欧美日韩亚洲精品一区 | 欧美日韩国产精品自在自线 | xxx观看| 免费一级欧美大片视频在线 | 91影院在线 |