Python只绘制部分数据

时间:2017-12-11 14:06:28

标签: python python-2.7 matplotlib

我想绘制任何部分或数据

这是代码

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

2 个答案:

答案 0 :(得分:1)

语法正确。问题是xsavg不是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]