2017-07-08 17 views
1

現在、約10秒間のサンプリング時間と0.1秒の時間を持つ信号を含むデータセットを扱っています。 私の目標は、このデータの特定の部分を抽出し、それをPython辞書に保存することです。関連部分の長さは約4秒です。プロット(Python)内の領域を選択し、その領域内のデータを抽出する方法

理想的には、これは私がやりたいものです。

  1. プロットデータの全体の10秒。

  2. たとえば、信号の関連部分を境界ボックスでマークします。

  3. プロットウィンドウを閉じるかボタンを押した後に、バウンディングボックス内のデータを抽出します。

  4. 新しいデータを取得します。

私は、matplotlibにパッチを描画し、パッチ内のデータポイントを抽出できることが分かりました。プロットが作成された後(plt.show()コマンドの実行後)にプロットを追加することは可能でしょうか?

はあなたがSpanSelectorを使用することができ

マヌエル

答えて

3

、事前にありがとうとよろしく。

基本的には、保存する行をthe matplotlib exampleに追加するだけです。

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib.widgets import SpanSelector 

fig = plt.figure(figsize=(8, 6)) 
ax = fig.add_subplot(211) 

x = np.arange(0.0, 5.0, 0.01) 
y = np.sin(2*np.pi*x) + 0.5*np.random.randn(len(x)) 

ax.plot(x, y, '-') 
ax.set_ylim(-2, 2) 
ax.set_title('Press left mouse button and drag to test') 

ax2 = fig.add_subplot(212) 
line2, = ax2.plot(x, y, '-') 


def onselect(xmin, xmax): 
    indmin, indmax = np.searchsorted(x, (xmin, xmax)) 
    indmax = min(len(x) - 1, indmax) 

    thisx = x[indmin:indmax] 
    thisy = y[indmin:indmax] 
    line2.set_data(thisx, thisy) 
    ax2.set_xlim(thisx[0], thisx[-1]) 
    ax2.set_ylim(thisy.min(), thisy.max()) 
    fig.canvas.draw_idle() 

    # save 
    np.savetxt("text.out", np.c_[thisx, thisy]) 

# set useblit True on gtkagg for enhanced performance 
span = SpanSelector(ax, onselect, 'horizontal', useblit=True, 
        rectprops=dict(alpha=0.5, facecolor='red')) 

plt.show() 

enter image description here

+0

アメージング - この方向に私を指してくれてありがとうそんなに! Spanselectorはまさに私が必要としているものです。 –

関連する問題