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

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

 更新時(shí)間:2020年04月23日 11:23:31   作者:qq_38778838  
這篇文章主要介紹了python中matplotlib實(shí)現(xiàn)隨鼠標(biāo)滑動(dòng)自動(dòng)標(biāo)注代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

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

Python3.6.5,代碼示例:

import matplotlib.pyplot as plt
import numpy as np
	
def Show(y):
	#參數(shù)為一個(gè)list
	
	len_y = len(y)
	x = range(len_y)
	_y = [y[-1]]*len_y
	
	fig = 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.inaxes
		x_min, x_max = axtemp.get_xlim()
		fanwei_x = (x_max - x_min) / 10
		if 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] = temp
			line_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:
			pass

	fig.canvas.mpl_connect('scroll_event', scroll)
	fig.canvas.mpl_connect('motion_notify_event', motion)
	
	plt.show()

效果演示:

補(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é)合畫布大小通過(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è)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Django實(shí)戰(zhàn)之用戶認(rèn)證(初始配置)

    Django實(shí)戰(zhàn)之用戶認(rèn)證(初始配置)

    這篇文章主要介紹了Django實(shí)戰(zhàn)之用戶認(rèn)證(初始配置),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Python爬取科目四考試題庫(kù)的方法實(shí)現(xiàn)

    Python爬取科目四考試題庫(kù)的方法實(shí)現(xiàn)

    這篇文章主要介紹了Python爬取科目四考試題庫(kù)的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • python-opencv如何讀取圖片及尺寸修改

    python-opencv如何讀取圖片及尺寸修改

    這篇文章主要介紹了python-opencv如何讀取圖片及尺寸修改,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • JSON文件及Python對(duì)JSON文件的讀寫操作

    JSON文件及Python對(duì)JSON文件的讀寫操作

    JSON和XML都是互聯(lián)網(wǎng)上數(shù)據(jù)交換的主要載體。這篇文章主要介紹了JSON文件及Python對(duì)JSON文件的讀寫操作,需要的朋友可以參考下
    2018-10-10
  • Python定義一個(gè)Actor任務(wù)

    Python定義一個(gè)Actor任務(wù)

    這篇文章主要介紹了Python定義一個(gè)Actor任務(wù),文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • mac安裝pytorch及系統(tǒng)的numpy更新方法

    mac安裝pytorch及系統(tǒng)的numpy更新方法

    今天小編就為大家分享一篇mac安裝pytorch及系統(tǒng)的numpy更新方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Python 3.3實(shí)現(xiàn)計(jì)算兩個(gè)日期間隔秒數(shù)/天數(shù)的方法示例

    Python 3.3實(shí)現(xiàn)計(jì)算兩個(gè)日期間隔秒數(shù)/天數(shù)的方法示例

    這篇文章主要介紹了Python 3.3實(shí)現(xiàn)計(jì)算兩個(gè)日期間隔秒數(shù)/天數(shù)的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了基于Python3.3的日期時(shí)間轉(zhuǎn)換與運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • 深入學(xué)習(xí)Python可變與不可變對(duì)象操作實(shí)例

    深入學(xué)習(xí)Python可變與不可變對(duì)象操作實(shí)例

    Python中的數(shù)據(jù)類型可以分為可變對(duì)象和不可變對(duì)象,了解它們之間的區(qū)別對(duì)于編寫高效的Python代碼至關(guān)重要,本文將詳細(xì)介紹可變對(duì)象和不可變對(duì)象的概念,以及如何正確地使用它們來(lái)提高代碼的性能和可讀性
    2023-12-12
  • Python3列表刪除的三種方式實(shí)現(xiàn)

    Python3列表刪除的三種方式實(shí)現(xiàn)

    本文主要介紹了Python3列表刪除的三種方式實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Anaconda入門使用總結(jié)

    Anaconda入門使用總結(jié)

    個(gè)人嘗試了很多類似的發(fā)行版,最終選擇了Anaconda,因?yàn)槠鋸?qiáng)大而方便的包管理與環(huán)境管理的功能。該文主要介紹下Anaconda,對(duì)Anaconda的理解,并簡(jiǎn)要總結(jié)下相關(guān)的操作
    2018-04-04

最新評(píng)論

彭泽县| 尉氏县| 桐城市| 甘洛县| 南乐县| 库尔勒市| 德兴市| 东丽区| 大姚县| 福安市| 南汇区| 昌都县| 太和县| 长子县| 泗水县| 新河县| 信宜市| 班玛县| 阿拉善右旗| 广昌县| 清水河县| 若尔盖县| 嵩明县| 德格县| 赫章县| 昭觉县| 海淀区| 定州市| 荥经县| 南漳县| 泰宁县| 宝应县| 香格里拉县| 崇礼县| 右玉县| 岢岚县| 西昌市| 衡水市| 垫江县| 金溪县| 塘沽区|