Python 如何将所有图形放在一个平面上

Python 如何将所有图形放在一个平面上,python,numpy,matplotlib,Python,Numpy,Matplotlib,我的程序使用Euler的方法绘制的图形。您可以将axis对象(下面称为ax)传递到EuleGraph函数,然后仅调用plt。显示一次: import numpy as np import matplotlib.pylab as plt # your function def Eulergraph(h, N, ax): ... for n in range(N+1): Pn = P[n] + h*f(P[n]) P = np.append(P,P

我的程序使用Euler的方法绘制的图形。您可以将axis对象(下面称为
ax
)传递到
EuleGraph
函数,然后仅调用
plt。显示一次:

import numpy as np
import matplotlib.pylab as plt

# your function
def Eulergraph(h, N, ax):
    ...

    for n in range(N+1):
        Pn = P[n] + h*f(P[n])
        P = np.append(P,Pn)
        # Note the change here
        ax.plot ( n, P[n] , ' ro' )

# create your figure and axis object
fig = plt.figure()
ax = plt.gca()

# pass the axis object as a parameter
Eulergraph(1,30,ax)       
Eulergraph(.5,30,ax)   
Eulergraph(.1,30,ax)

# formatting of your plot
plt.xlabel (' Value of n ”' )
plt.ylabel (" Value of p[n] ”")
plt.title (" Approximate Solution with Euler’s Method " )
plt.show()   
请注意,您还可以在函数中调用not调用
plt.show()
,这将达到预期效果。但是,我建议编写函数来接受axis参数,因为您可以在稍后阶段选择将绘图分离到不同的图形上


从:

显示图形。在ipython及其pylab模式下运行时,显示所有图形并返回ipython提示符

因此,一个小示例显示,您可以在同一个图形上绘制两条线:

exp1.py:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(10)
y1 = np.arange(10)*2-1
y2 = np.arange(10)*1+1

plt.plot(x,y1)
plt.plot(x,y2)
plt.show()
运行
exp1.py
可以获得一个图形和两行的预期效果:

但是,将脚本更改为call
plt.show
两次将导致两个单独的绘图,例如

plt.plot(x,y1)
plt.show()
plt.plot(x,y2)
plt.show()

plt.show()
函数显示图形(定义了该时间点的所有绘图),然后进一步绘图将创建新图形

将代码粘贴到问题(或答案)中时,请立即选择它,然后键入Ctrl+K或单击编辑器界面中的
{}
按钮以正确设置其格式。我已经在这里为您修复了它。我有一个很棒的matplotlib快速参考pdf,我正试图找到它的链接。如果没有,我会把它上传到某个地方并链接起来。。我通常用于
matplotlib
绘图的备忘单。我把它放在每台我编码的计算机上…谢谢,但是我仍然在使用axis对象时出错,它不允许我编译。事实上,不管它如何工作,这是公平的。在上面