我想绘制任何部分或数据
这是代码
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib import style
... ...
xs = []
avg = []
for line in lines:
if len(line) > 1:
x, y1 = line.split(',')
xs.append(float(x))
avg.append(float(y1))
ax1.plot(xs, avg, label='avg')
我添加了一些代码,以便您可以看到变量的类型
我试过了:
ax1.plot(xs[avg>0], avg[avg>0], label='avg')
并且没有工作
我会做一些像:Indxs=find (ys>0)
Plot(xs(indxs),ys(indxs))
答案 0 :(得分:1)
语法正确。问题是xs
和avg
不是numpy数组。因此,您首先需要将这些列表转换为numpy数组,然后切片将按预期工作。
xs = np.array(xs)
avg = np.array(avg)
ax1.plot(xs[avg>0], avg[avg>0], label='avg')
答案 1 :(得分:1)
由于python中的索引(avg> 0)是布尔值,因此您的工作无效。当你习惯Matlab然后你应该尝试numpy布尔索引。
你可以这样做:
import numpy as np
xs = numpy.asarray(x)
ys = numpy.asarray(y)
ys_filtered = ys[x > 0]