2014-09-21 5 views
1

은 내가 matplotlib에서 내가 원하는 원을 그릴 수 있어요이 https://www.youtube.com/watch?v=LznjC4Lo7lEmatplotlib에서 원을 올바른 서브 플롯으로 가져 오는 방법은 무엇입니까?

을 다시 시도하고, 그러나 나는 왼쪽 부가 적 줄거리의 원 서로 옆에 두 개의 줄거리를 갖고 싶어. 나는 ax1, ax2 변수를 이해하지 못한다고 생각합니다. 왜냐하면 라인은 왼쪽 서브 플롯에, 그리고 오른쪽 서브 플롯에는 원이 있기 때문입니다.

오른쪽 서브 플롯에 사인파를 넣을 수 있도록 왼쪽 서브 플로트에서 둘 다 필요합니다. 내 실수는 간단하지만 Circleplt에서만 호출 할 수 있기 때문에 ax1.Circle이 충돌합니다. 어떤 아이디어? 여기

코드입니다 :

def harmonics(Branches, colors, t, dotsize=2, blur=True, circles=True,save=False, newdir=False, prefix='',path='',note=''): 
    txt='' 
    Ds=[] 
    f, (ax1, ax2) = plt.subplots(1, 2, sharey=True) 
# ax1.plot(x, y) 
# ax1.set_title('Sharing Y axis') 
# ax2.scatter(x, y) 

    for ct2, B in enumerate(Branches): 
     D,P,L,K,N = B[0],B[1],B[2],B[3],B[4] 
     Ds.append(sum([np.absolute(val) for val in D])) 
     col = colors[ct2] 
     A = ramify(B,t) 
     R = [0+0j] 

     coll=np.array([]) 
     fig = plt.gcf() 
     KIRKULOS={} 

     for ct,a in enumerate(A): 
      for x in range(len(a)): 
       if x == 0: 
        ax1.plot([R[ct].real,float(a[x].real)+R[ct].real],[R[ct].imag,float(a[x].imag)+R[ct].imag],col,ms=dotsize+2)#color='#FF4D4D',label='python') 
        rr = float(a[x].real)+R[ct].real + (float(a[x].imag)+R[ct].imag)*1j 
        R.append(rr) 
       else: 
        pass#plt.plot([R[ct].real,float(a[x].real)+R[ct].real],[R[ct].imag,float(a[x].imag)+R[ct].imag],color='#FFFFFF',ms=dotsize,label='python') 
      if circles: 
       KIRKULOS[ct]=plt.Circle((R[ct].real,R[ct].imag),D[ct],color=col[-1], fill=False)  
       plt.gca().add_artist(KIRKULOS[ct]) 
      coll = np.append(coll,a) 

    plt.axis("equal") 
    limit=max(Ds)+max(Ds)*.2 
    plt.xlim((-limit,limit)) 
    plt.ylim((-limit,limit)) 
    plt.ylabel('iy') 
    plt.xlabel('x') 

    for ct,B in enumerate(Branches):# in RAMI.keys(): 
     D,P,L,K,N = B[0],B[1],B[2],B[3],B[4] 
     txt = txt +'\n\n'+str(D)+'\t Radius'+'\n'+str(P)+'\t Phase'+'\n'+str(L)+'\t Order'+'\n'+str(K)+'\t Frequency'+'\n'+str(N)+'\t Degree' 
    txt=txt+'\n\n'+note 
    fig.set_size_inches(10,10) 
    if save: 
     if newdir: 
      import time 
      import os 
      now = str(time.time())+'/' 
      os.makedirs(path+now) 
      path = path+now 
     f=open(path+prefix+'.txt','wb+') 
     f.write(txt) 
     f.close() 
     plt.savefig(path+prefix+'.jpg') 
    plt.show() 

답변

1

Circle 그냥은 부가 적 줄거리 (축)에 서클에게만를 추가하지 않습니다 호출, 패치를 생성합니다. 이것은 plt.gca().add_artist(KIRKULOS[ct])보다 완료되었습니다. gca은 현재 축을 가져오고 활성 서브 플로트를 반환하므로 다음과 같이 대체합니다. ax1.add_artist(KIRKULOS[ct])

+0

감사합니다. 내가 시도한 첫 번째 시도 중 하나가'ax1.gca.add_artist (KIRKULOS [ct]) '였습니다. 물론 추락했습니다. 'gca'에 대해 잘 알고 있습니다. – Wapiti