#python #for-loop #matplotlib #spyder
#питон #для-петли #matplotlib #спайдер
Вопрос:
Я хочу создать график, который перекрывает графики с заключительным этапом цикла, а также изменяет стили символов с каждой итерацией. Использование plt.show() вне цикла не работает, и я застрял на этом в течение некоторого времени. Я использую spyder для запуска кода
import matplotlib.pyplot as plt import numpy as np An=np.array([51,101,201,301,501])#No. agents t=100#time steps MM=9#agent memory r=2#repetitions sty=['ro','gx','b ','k*','m^'] Alpha=np.array([]) Vav=np.array([]) V=np.array([]) V1=np.array([]) for agentcount in np.arange(0,5): #count over agents N=An[agentcount] for M in np.arange(1,MM 1): for crep in np.arange(1,r 1): A=np.array([]) win=(np.random.rand(M)gt;0.5).astype(int) #winning record s1=(np.random.rand(2**M,N)gt;0.5).astype(int) #random strat s2=(np.random.rand(2**M,N)gt;0.5).astype(int) #alternative strat payout=np.zeros([2,N])#empty payout record for tc in np.arange(1,t 1): cc=np.dot((2**(np.arange(0,M))),win[:M])#picks next strat nex1=s1[cc,:] nex2=s2[cc,:] nexts=np.stack((nex1,nex2),axis=0) Next=np.array([]) for cn in np.arange(1,N 1): #better strat if (payout[0,cn-1]gt;payout[1,cn-1]): Next=np.append(Next,nex1[cn-1]) else: Next=np.append(Next,nex2[cn-1]) Asum=np.sum(Next,0)/N winning=(Asumlt;0.5).astype(int) win=np.insert(win,0,winning) payout=payout (nexts==winning) A=np.append(A,Asum) A=np.dot(A-0.5,2) Alpha=np.append(Alpha,2**M/N) V=(np.append(V,np.var(A)*N)) V1=(np.append(V1,np.var(A)*N)) V2=np.stack((V,V1),axis=0) Vav=np.mean(V2,axis=0) plt.loglog(Alpha,Vav,sty[agentcount]) plt.show()
Комментарии:
1. Из вашего вопроса трудно понять, что именно вы хотите сделать. Если вы сделаете отступ во всем коде от «для M» до конца, то ваш код будет каждый раз строиться в другом стиле. В настоящее время число агентов, используемое в sty[число агентов], не изменяется, так как оно находится вне цикла его изменения.