如果信号值大于信号的均值,则画一条线
Draw a line if value of signal is bigger than mean of the signal
当我的信号值大于该信号的平均值时,我想在图表上画一条线。我的信号是肌肉拉动和放松的简单串联。
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)
但是,它不是生成水平线,而是生成垂直线:
有人可以帮我解决这个问题吗?
我忘了澄清这一点,在这种情况下关闭(偏移量已经被过滤掉)这部分代码的实现是为了展示我的信号是如何创建的。当我打印出照片上的平均值时,它在 0.26 左右摆动。我希望我的线在信号值大于平均值时出现,并在信号值小于平均值时结束。
您应该使用 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()
哪个会给你
或matplotlib.pyplot.hlines
如果你不想一路过关斩将,
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()
注意 - matplotlib.pyplot
的 import
约定是
import matplotlib.pyplot as plt
deprecated pylab
的约定是
import matplotlib.pylab as pl
如果您使用的是 pylab
,那么您应该按照 official usage guide 的指示切换到 pyplot
。
当我的信号值大于该信号的平均值时,我想在图表上画一条线。我的信号是肌肉拉动和放松的简单串联。
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)
但是,它不是生成水平线,而是生成垂直线:
有人可以帮我解决这个问题吗?
我忘了澄清这一点,在这种情况下关闭(偏移量已经被过滤掉)这部分代码的实现是为了展示我的信号是如何创建的。当我打印出照片上的平均值时,它在 0.26 左右摆动。我希望我的线在信号值大于平均值时出现,并在信号值小于平均值时结束。
您应该使用 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()
哪个会给你
或matplotlib.pyplot.hlines
如果你不想一路过关斩将,
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()
注意 - matplotlib.pyplot
的 import
约定是
import matplotlib.pyplot as plt
deprecated pylab
的约定是
import matplotlib.pylab as pl
如果您使用的是 pylab
,那么您应该按照 official usage guide 的指示切换到 pyplot
。