Python pylab:使用经过调整的spines制作绘图,但不绘制

时间:2014-04-07 23:57:49

标签: python matplotlib plot

我已经阅读了关于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之外。

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

1 个答案:

答案 0 :(得分:1)

问题在于您定义x:

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

xStart小于xStop,因此您要求的是负数,在这种情况下,numpy会为您提供零长度数组。所以你的情节是两个零长度阵列相互映射的完美精确图!如果您将其更改为:

x = np.linspace(xStart, xStop, num=(xStop-xStart)*100)
然后你就会得到你的期望。