首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matplotlib和numpy:在x轴上绘制无穷大数字时出错(pyzo)

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

Stack Overflow用户
提问于 2014-09-03 16:11:55
回答 2查看 970关注 0票数 0

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

表达式如下所示:

代码语言:javascript
复制
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

其中"power“是介于0和100+ (一个小数)之间的值列表,而list1可以是介于负值、0或正值(四个小数)之间的任何值。

正如你所看到的,为了避免零除,我有一个条件,当list1 =0时,我有一个渐近行为。

对于y轴,这样做可以很好地工作,并且可以很好地绘制。但是,如果我试图在x轴上绘制相同的东西,我会得到以下警告:

代码语言:javascript
复制
[...]\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)

从我所看到的情况来看,绘图看起来很好(可能有一些我没有看到的问题),但我希望避免收到警告。

EN

回答 2

Stack Overflow用户

发布于 2014-09-03 16:37:02

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

代码语言:javascript
复制
%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)

这似乎很管用。

票数 0
EN

Stack Overflow用户

发布于 2014-09-03 21:56:08

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

代码语言:javascript
复制
import numpy as np
np.seterr('ignore')

瞧。未打印任何警告。我认为这可能是一个风险,如果有什么地方出了问题,但据我所见,它的情节很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25639390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档