Python 如何将所有图形放在一个平面上
我的程序使用Euler的方法绘制的图形。您可以将axis对象(下面称为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
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
可以获得一个图形和两行的预期效果:
但是,将脚本更改为callplt.show
两次将导致两个单独的绘图,例如
plt.plot(x,y1)
plt.show()
plt.plot(x,y2)
plt.show()
plt.show()
函数显示图形(定义了该时间点的所有绘图),然后进一步绘图将创建新图形 将代码粘贴到问题(或答案)中时,请立即选择它,然后键入Ctrl+K或单击编辑器界面中的{}
按钮以正确设置其格式。我已经在这里为您修复了它。我有一个很棒的matplotlib快速参考pdf,我正试图找到它的链接。如果没有,我会把它上传到某个地方并链接起来。。我通常用于matplotlib
绘图的备忘单。我把它放在每台我编码的计算机上…谢谢,但是我仍然在使用axis对象时出错,它不允许我编译。事实上,不管它如何工作,这是公平的。在上面