在Python的obspy模块中注释数字

时间:2015-12-18 17:27:28

标签: python annotations

我对python很新,很抱歉,如果下面我的尝试很差。我试图尽可能多地包含信息,因为我知道如果没有用于运行脚本的数据副本就很难解决问题。

问题:

我试图在使用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点列表,在样本中测量 - 所以samplenum / samplingrate =(自t1以来的秒数)

以下是输出: Output - annotations don't 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

进步: 我真的更喜欢在我要突出显示的部分的长度上有一条粗细的水平线,并带有相关的文字注释。然而,箭头和标签是唯一可以找到示例的注释,这就是我现在正在做的事情。如果两个点+文本框之间的水平线有一个简单的方法,那就更好了!

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我花了一段时间来完成这项工作,发现最好的方法是使用matplotlib重新分配数据和绘图,而不是使用内置的obspy模块绘图器,因为它们被设计为“预览”窗格而不是最终数字。 / p>

我不确定它是否与上面的代码完全吻合,但这是我现在使用的代码,允许对数字进行注释:

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()

此处显示输出:

enter image description here

更多信息:

可以在此处找到用于进一步注释选项的精彩网页: http://matplotlib.org/examples/pylab_examples/axhspan_demo.html