我想把这两个单独的情节合在一起。我该怎么做?这两个图表示列表中的数字。第一个对应于20,另一个对应于40。同样,它也可以用于其他各种数字。
dis=[20,40]
b=0
f=25/60
time=10
t_i=0.001
mean=0.03
std=0.00666
r=0.2
w=2*np.pi*300/60
v=2*np.pi*r*300/60
avg=0.03
high=2
xm=np.linspace(0,2,500)
ym=high
while b<=len(dis)-1:
n=2*3.14*dis[b]*r/(avg*100)
s=np.random.normal(mean,std,round(n))
fig,ax=plt.subplots(figsize=(12,2))
for i in s:
t=np.arange(0.1,time,t_i)
k=r+i
c=v/k
m=np.sqrt((k**2-(k-0.01)**2)/k)
j=np.arcsin(m)
x=k*(np.sin((c*t)+j))+f*t
y=k*(np.cos((c*t)+j))
ax.set_xlim([0.3,2])
ax.set_ylim([y.min()-0.05,-0.1])
reversed = False
ind0=0
while ind0 < len(x):
ind1 = ind0 + 1
if reversed:
while ind1 < len(x) and x[ind1] <= x[ind1 - 1]:
ind1 += 1
ym = np.minimum(ym, np.interp(xm, x[ind0:ind1][::-1], y[ind0:ind1][::-1], left=high, right=high))
else:
while ind1 < len(x) and x[ind1] >= x[ind1 - 1]:
ind1 += 1
ym=np.minimum(ym, np.interp(xm, x[ind0:ind1], y[ind0:ind1], left=high, right=high))
ind0 = ind1
reversed = not reversed
ax.set_xlabel('x (mm)')
ax.set_ylabel('y (mm)')
ax.plot(xm, ym, color='r', alpha=0.5)
b+=1
我假设您希望将两条线都绘制到一个绘图区域中。在这种情况下,您应该如下调整代码
请注意,您正在while循环中创建新的
fig, ax
对象,因此每次打印某个对象时,它都在一个新图形中。相反,您希望在while循环之前设置图形和轴,以便在同一图形中不断添加图形。实现这一点的最简单代码修改如下:这给出了下图:
相关问题 更多 >
编程相关推荐