【问题标题】:Python plot only part of dataPython仅绘制部分数据
【发布时间】:2018-05-25 01:54:21
【问题描述】:

我想绘制任何部分或数据

这里是代码

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

没用

im matlab 我会做一些类似的事情:

Indxs=find (ys>0)
Plot(xs(indxs),ys(indxs))

【问题讨论】:

标签: python python-2.7 matplotlib


【解决方案1】:

语法正确。问题是 xsavg 不是 numpy 数组。因此,您首先需要将这些列表转换为 numpy 数组,然后切片将按预期工作。

xs = np.array(xs)
avg = np.array(avg)
ax1.plot(xs[avg>0], avg[avg>0], label='avg')

【讨论】:

    【解决方案2】:

    由于您在 python 中的索引 (avg > 0) 是布尔值,因此您无法正常工作。当您习惯了 Matlab 时,您绝对应该尝试使用 numpy 布尔索引。

    你可以这样做:

    import numpy as np
    xs = numpy.asarray(x)
    ys = numpy.asarray(y)
    ys_filtered = ys[x > 0]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-20
      相关资源
      最近更新 更多