Нарисуйте линию, если значение сигнала больше среднего значения сигнала. - PullRequest
1 голос
/ 15 января 2020

Я хочу нарисовать линию на графике, когда значение моего сигнала будет больше, чем среднее значение этого сигнала. Мой сигнал простое объединение мышц и расслабления.

muscle_on2 = np.random.uniform(-1, 1, 1000) + offs
muscle_off = np.random.uniform(-0.05, 0.05, 500) + offs
emg = np.concatenate([muscle_off, muscle_on1, muscle_off, muscle_on2, muscle_off])

Чтобы сделать это, я попробовал что-то вроде этого:

pl.plot(x_axis)
for i in range(0, len(emg), 1):
    if emg[i]>RM:
        pl.plot([i, 1.0], [i, 1.0], 'r-', lw=5)

, где RM:

RM = np.mean(emg)

однако вместо создания горизонтальной линии, он выдает вертикальную линию: enter image description here

Может кто-нибудь помочь мне с этим?

Я забыл уточнить это, в этом случае offs (смещение уже отфильтровано ) эта часть кода была реализована, чтобы показать, как создается мой сигнал. Когда я распечатал среднее значение на фотографии, оно колебалось около 0,26. Я хочу, чтобы моя строка появлялась, когда значение сигнала больше среднего значения, и заканчивалась, когда значение сигнала меньше среднего значения.

1 Ответ

0 голосов
/ 16 января 2020

Вы должны использовать либо matplotlib.pyplot.axhline,

import matplotlib.pyplot as plt
import numpy as np

muscle_on2 = np.random.uniform(0, 1, 1000)
muscle_off = np.random.uniform(0, 0.05, 500)
emg = np.concatenate([muscle_off, muscle_on2, muscle_off])
RM = np.mean(emg)
plt.plot(emg)
plt.axhline(RM, color='r')
plt.show()

, что даст вам

enter image description here

или matplotlib.pyplot.hlines, если вы не хотите go по всему участку,

import matplotlib.pyplot as plt
import numpy as np

muscle_on2 = np.random.uniform(0, 1, 1000)
muscle_off = np.random.uniform(0, 0.05, 500)
emg = np.concatenate([muscle_off, muscle_on2, muscle_off])
e = x[emg > RM]
plt.plot(x, emg)
plt.hlines(RM, e[0], e[-1], color='r', lw=2, zorder=3)
plt.show()

enter image description here


Примечание - Соглашение import для matplotlib.pyplot равно

import matplotlib.pyplot as plt

, а соглашение для устарело pylab равно

import matplotlib.pylab as pl

Если вы используете pylab, вам следует переключиться на pyplot, как указано в официальном руководстве по использованию .

...