Python的obspy模块中的图形注释
我对python非常陌生,如果我下面的尝试非常糟糕,那么很抱歉。我已经尝试尽可能多地包含信息,如果没有用于运行脚本的数据副本,很难解决问题 问题:Python的obspy模块中的图形注释,python,annotations,Python,Annotations,我对python非常陌生,如果我下面的尝试非常糟糕,那么很抱歉。我已经尝试尽可能多地包含信息,如果没有用于运行脚本的数据副本,很难解决问题 问题: on_off Out[95]: array([[1145, 1660]]) t1 Out[92]: 2015-12-08T06:03:20.000000Z t1+(on_off[0,0]/df) Out[93]: 2015-12-08T06:03:42.900000Z t1+(on_off[0,0]/df)+5 Out[94]: 2015-12
on_off
Out[95]: array([[1145, 1660]])
t1
Out[92]: 2015-12-08T06:03:20.000000Z
t1+(on_off[0,0]/df)
Out[93]: 2015-12-08T06:03:42.900000Z
t1+(on_off[0,0]/df)+5
Out[94]: 2015-12-08T06:03:47.900000Z
我试图在使用obspy生成的图形上注释点,其中x轴在UTCdatetime中
常规设置
# Retrieve modules needed
from obspy.core import read
from obspy import UTCDateTime
from obspy.signal.trigger import classicSTALTA, recSTALTA, zDetect, plotTrigger, triggerOnset
from obspy.signal.filter import envelope
#path1 = 'rawdata/2015/EC/'
path1 = '../rawdata/2015/EC/'
station = 'BREF'
component = 'BHZ.D'
file = 'EC.BREF..BHZ.D.2015.342'
str1 = read(path1+station+'/'+component+'/'+file)
#sampling rate
df = str2[0].stats.sampling_rate
#crop for one test
t1 = UTCDateTime("2015-12-08T06:03:20.000000Z")
# other modules I might need
import numpy as np
import matplotlib.pyplot as plt
失败的实际注释节
我知道这段代码可能很混乱,但我找不到任何关于如何在obspy中注释的好文档。希望比我更了解python的人能做出有根据的猜测
fig = plt.figure()
str1.plot(color='b', starttime=t1, endtime=t1+40, number_of_ticks=10)
ax = fig.add_subplot(111)
ax.annotate('local max', xy=(t1+(on_off[0,0]/df),0), xytext=(t1+(on_off[0,0]/df)+5,0),
arrowprops=dict(facecolor='black', shrink=1),
)
plt.show()
其中on_off是我标记的x点列表,以样本为单位测量-so samplenum/samplingrate=(从t1开始的秒数)
以下是输出:
更多信息:
on_off
Out[95]: array([[1145, 1660]])
t1
Out[92]: 2015-12-08T06:03:20.000000Z
t1+(on_off[0,0]/df)
Out[93]: 2015-12-08T06:03:42.900000Z
t1+(on_off[0,0]/df)+5
Out[94]: 2015-12-08T06:03:47.900000Z
进步:
我真的希望有一条粗的水平线,长度与我想要突出显示的部分相同,并带有相关的文本注释。然而,箭头和标签是我能找到的唯一一个例子,所以这就是我目前正在做的。如果有一个简单的方法来画两点之间的水平线+文本框,那就更好了
感谢您的帮助我花了一段时间研究了这个问题,发现最好的方法是重新分配数据并使用matplotlib而不是内置的obspy模块绘图仪进行绘图,因为它们更多地被设计为“预览”窗格,而不是最终图形 我不确定它是否完全符合上面的代码,但我现在使用的代码允许对图形进行注释:
fig = plt.figure()
data = str2[0].data
plt.plot(data)
plt.hold(True) #equivalent of matlab hold on
plt.axvline(x=on_off[0,0], c='r')
npts2 = str2[0].stats.npts
plt.title(str2[0].stats.starttime)
l = plt.axhline(y=-4000, xmin=on_off[0,0]/npts2, xmax=on_off[0,1]/npts2, linewidth=4, color='r')
plt.show()
输出显示在此处:
on_off
Out[95]: array([[1145, 1660]])
t1
Out[92]: 2015-12-08T06:03:20.000000Z
t1+(on_off[0,0]/df)
Out[93]: 2015-12-08T06:03:42.900000Z
t1+(on_off[0,0]/df)+5
Out[94]: 2015-12-08T06:03:47.900000Z
更多信息:
on_off
Out[95]: array([[1145, 1660]])
t1
Out[92]: 2015-12-08T06:03:20.000000Z
t1+(on_off[0,0]/df)
Out[93]: 2015-12-08T06:03:42.900000Z
t1+(on_off[0,0]/df)+5
Out[94]: 2015-12-08T06:03:47.900000Z
可在此处找到一个提供更多注释选项的优秀网页: