在python

时间:2015-04-22 12:36:26

标签: python

我正在尝试在同一个图上绘制两个多个绘图,但只包含前两个绘图。我原本期待有5个地块

from numpy import *

from matplotlib.pyplot import *

x = linspace(-1, 1, 200)

y_0 = ones(len(x))
y_1 = x
y_2 = 1/2*(3*x**2-1)
y_3 = 1/2*(5*x**3-3*x)
y_4 = 1/8*(35*x**4-30*x**2+3)

figure()
plot(x, y_0)   # Plot some data
plot(x, y_1)   # Plot some data
plot(x, y_2)   # Plot some data
plot(x, y_3)   # Plot some data
plot(x, y_4)   # Plot some data

grid(True)   # Set the thin grid lines

savefig("plot_1.png")   # Save the figure to a file "png",
                                # "pdf", "eps" and some more file types are valid
show("plot_1.png")

1 个答案:

答案 0 :(得分:1)

当你像y_1 = x这样的东西时,你不是把x的副本只是一个指向同一个对象的指针。

更重要的是,如果您使用的是python2

>>> 1/2*(3*x**2-1)
array([ 0.,  0.,  0.,  0.,  0., -0., -0., -0., -0., -0., -0., -0., -0.,
       -0., -0.,  0.,  0.,  0.,  0.,  0.])

因为1/2变为零(我知道,这是关于python最烦人的事情之一)

因此,matplotlib可能会绘制几个图表,但不是您预期的位置。输入一些print()命令来查看你的内容并进行调试

如果是python 2问题,这将解决它

y_2 = 1.0/2*(3*x**2-1)
y_3 = 1.0/2*(5*x**3-3*x)
y_4 = 1.0/8*(35*x**4-30*x**2+3)