python - 如何将所有图表放在一个平面上
问题描述
我的程序使用欧拉方法在同一平面上绘制时间间隔 [0,30] 的 () 和近似值 ℎ () 的图形,ℎ=1,0.5,0.1。但是,我是 python 新手,我不知道如何将所有图形放在一个平面上。
import numpy as np
import matplotlib.pylab as plt
def Eulergraph(h,N):
K = 12; r = 0.43; Po = 1;
而不是三个图,我需要一个平面上的所有图。
解决方案
您可以将轴对象(ax
在下面调用)传递给Eulergraph
函数,然后只调用plt.show
一次:
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()
请注意,您也不能plt.show()
在您的函数中调用,这会产生预期的效果。但是,我建议您编写函数以接受轴参数,因为您可以在稍后阶段选择将图分隔到不同的图上。
来自plt.show的文档:
显示一个图形。在 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()
但是,将脚本更改为调用plt.show
两次将导致两个单独的图,例如,
plt.plot(x,y1)
plt.show()
plt.plot(x,y2)
plt.show()
该plt.show()
函数显示图形(所有图形都定义到该时间点),然后进一步的图形将创建新图形。
推荐阅读
- c++ - 如何在应用程序中将 com.apple.security.smartcard 权利设置为是
- python - 如何用 sin cos 和 pi 绘制一个圆
- python - 使用 pyinstaller 的自定义图标不起作用
- sql-server - 每天在特定记录集上更新数千次的表的 UPDATE 触发器
- python - 如何忽略来自 PDFMiner 的错误以避免 Python 脚本中断
- python-3.x - Python3.6打印冒泡排序的各个阶段
- python - 如何将时间序列数据输入自动编码器网络以进行特征提取?
- c# - 传递浮点数的 C# dllimport 问题
- java - 为什么这个正则表达式在 FreeMarker 中失败
- inno-setup - Inno Setup - 在代码部分创建目录