我已经阅读了关于pylab和pyplot的一堆文档,以及stackoverflow上的一些过去的帖子,但我无法按照我期望的方式使用它。我正在尝试通过以下代码创建一个简单的绘图函数:
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)
我在想这应该在x轴上显示从-2到2的图形,其中轴刺穿着图形的中心,函数f(x)= x ^ 2-x。相反,它会产生一个空白的数字,除了刺穿中心并从-0.6到0.6之外。
如果可能的话,最好都解释为什么这段代码会产生结果,以便我更好地理解这些命令正在做什么,以及能够做我想做的代码。
答案 0 :(得分:1)
问题在于您定义x:
x = np.linspace(xStart, xStop, num=(xStart-xStop)*100)
xStart
小于xStop
,因此您要求的是负数,在这种情况下,numpy会为您提供零长度数组。所以你的情节是两个零长度阵列相互映射的完美精确图!如果您将其更改为:
x = np.linspace(xStart, xStop, num=(xStop-xStart)*100)
然后你就会得到你的期望。