Matplotlib和numpy:在x轴(pyzo)上绘制无限数字时出错

时间:2014-09-03 08:11:55

标签: python-3.x numpy matplotlib plot

我有一个值列表,其中一些值在使用matplotlib绘图之前需要转换。

表达式如下:

m=0
while m < len(power):
        for item in power:
            if float(list1[m]) != 0:
                list2.append(float((1/float(list1[m])-1)*float(power[m])))
            elif float(list1[m]) == 0:
                list2.append("inf")
            m+=1

其中&#34;电源&#34;是0到100+之间的值列表(一个十进制),list1可以是负值,0或正值(四位小数)之间的任何值。

正如你所看到的,为了避免零分割,如果list1 = 0,我有条件得到渐近行为。

对于y轴,这很好,并且绘制得很好。但是,如果我尝试在x轴上绘制相同的东西,我会收到以下警告:

[...]\lib\site-packages\matplotlib\lines.py:504: RuntimeWarning: invalid value encountered in subtract
return np.alltrue(x[1:] - x[0:-1] >= 0)
[...]\lib\site-packages\matplotlib\lines.py:504: RuntimeWarning: invalid value encountered in greater_equal
return np.alltrue(x[1:] - x[0:-1] >= 0)

从我所看到的情节看,情节看起来很好(也许有一些我没有看到的问题),但我想避免收到警告。

2 个答案:

答案 0 :(得分:0)

如果你不给我们你的绘图代码,很难说你的绘图代码有什么问题!但是,让我们试一试:

%pylab
power = randint(1, 100, 10)
list1 = randn(10)
list2 = []

m=0
while m < len(power):
        for item in power:
            if float(list1[m]) != 0:
                list2.append(float((1/float(list1[m])-1)*float(power[m])))
            elif float(list1[m]) == 0:
                list2.append("inf")
            m+=1

plot(t, list2)
plot(list2, t)

这似乎有效。

答案 1 :(得分:0)

这可能不是处理此问题的正确方法,但似乎有效:

import numpy as np
np.seterr('ignore')

瞧。没有打印警告。如果出现问题,我想这可能是一种风险,但从我所看到的情况来看,情况就好了。