首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matplotlib - loglog给了我破碎的情节

matplotlib - loglog给了我破碎的情节
EN

Stack Overflow用户
提问于 2014-06-25 16:15:09
回答 1查看 72关注 0票数 0

我正在将我的情节嵌入到GTK2程序中。从下面的两张图片中可以看到,如果我以线性的方式绘制数据,则该图形很好,但是使用loglog方法可以得到一个不可用的图形:

使用相同的数据生成这两个图。以下是代码:

代码语言:javascript
复制
win2 = gtk.Window()
win2.set_default_size(400,300)
win2.set_title("Embedding in GTK")
fig2 = Figure(figsize=(5, 8), dpi=100)
freqStart = float(txtFreqStart.get_text())
freqEnd = float(txtFreqEnd.get_text())

vbox2 = gtk.VBox()
win2.add(vbox2)
ax2 = fig2.add_subplot(221)
ax3 = fig2.add_subplot(222)
ax4 = fig2.add_subplot(223)
ax5 = fig2.add_subplot(224)

ya = list(subData[ls / 0.005:le / 0.005])

for i in xrange(0, len(ya)):
    if ya[i] < 0:
        ya[i] = 0

yb = list(subData[ls / 0.005:le / 0.005])

for i in xrange(0, len(yb)):
    if yb[i] > 0:
        yb[i] = 0

Ya = fft(ya)
Yb = fft(yb)

ax2.plot(list(frange(ls, le, 0.005)), ya)
ax3.plot(list(frange(ls, le, 0.005)), yb)

if radLoglog.get_active():
    print ax4.loglog(list(frange(freqStart, freqEnd, 1)), Ya[freqStart:freqEnd])[0].get_xdata()
    ax5.loglog(list(frange(freqStart, freqEnd, 1)), Yb[freqStart:freqEnd])
else:
    print ax4.plot(list(frange(freqStart, freqEnd, 1)), Ya[freqStart:freqEnd])[0].get_xdata()
    ax5.plot(list(frange(freqStart, freqEnd, 1)), Yb[freqStart:freqEnd])

canvas2 = FigureCanvas(fig2)
canvas2.draw()
vbox2.pack_end(canvas2)

toolbar2 = NavigationToolbar(canvas2, win2)
vbox2.pack_start(toolbar2, False, False)

win2.show_all()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-25 16:46:48

正如@PaulH在评论中所说,这是正确的行为。

负数的log是未定义的,numpy通过返回NaN (np.isnan(np.log(-1)))来处理这个问题。matplotlib在密谋时遮掩了NaNs。

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

https://stackoverflow.com/questions/24413784

复制
相关文章

相似问题

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