2014-04-07 41 views
0

我已阅读了一堆关于pylab和pyplot以及一些过去的帖子在stackoverflow上的文档,但我不能让它工作我期望它的方式。我想通过下面的代码来创建一个简单的绘图功能:python pylab:绘制调整后的刺,但不绘制

import numpy as np 
import pylab as pl 

def simplePlot(xStart, xStop, f): 
    x = np.linspace(xStart, xStop, num=(xStart-xStop)*100) 
    y = [f(i) for i in x] 

    pylab.figure() 
    ax = plt.gca() 
    pylab.plot(x,y) 
    ax.xaxis.set_ticks_position('bottom') 
    ax.yaxis.set_ticks_position('left') 
    ax.spines['left'].set_position(('data', 0)) 
    ax.spines['bottom'].set_position(('data', 0)) 
    pylab.show() 

def funct(x): 
    return x**2 - x 

simplePlot(-2,2,funct) 

我想这应该弹出一个曲线图,从-2到2 x轴,通过中心运行轴刺函数f(x)= x^2-x的图。相反,它会产生一个空白图,除了刺穿中心并从-0.6到0.6。

如果可能的话,最好能解释为什么这段代码会产生它的结果,这样我就能更好地理解这些命令正在做什么,以及将做我想做的事情的代码。

回答

1

的问题是在其中定义X:

x = np.linspace(xStart, xStop, num=(xStart-xStop)*100) 

xStart小于xStop所以你要求一个负数的点,在这种情况下numpy的给你一个零长度的数组。所以你的情节是一个完全准确的两个零长度数组相互对立的情节!如果您将其更改为:

x = np.linspace(xStart, xStop, num=(xStop-xStart)*100) 

然后您会得到您所期望的。