2014-04-07 42 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) 

然後您會得到您所期望的。