Как перестроить график в цикле for и изменить стиль символов?

#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[число агентов], не изменяется, так как оно находится вне цикла его изменения.