2014-09-21 37 views
1

我试图重新创建https://www.youtube.com/watch?v=LznjC4Lo7lE如何将圈子变成matplotlib中的正确子图?

我能画出我想要的圈子里matplotlib,但我希望能有彼此相邻,在左插曲圆圈2个次要情节。我想我不明白ax1,ax2变量,因为这些线在左边的子图中卷起来,而在右边的子图中是圆形的。

我需要它们都在左侧子图中,因此我可以将正弦曲线置于右侧子图中。我认为我的错误很简单,但尝试ax1.Circle崩溃,因为Circle只能从plt调用。有任何想法吗?

下面是代码:

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刚刚生成补丁,调用它不cirlce添加到副区(轴)。这比做plt.gca().add_artist(KIRKULOS[ct])gca表示获取当前轴并返回活动子图,因此将其替换为ax将执行:ax1.add_artist(KIRKULOS[ct])

+0

工作正常,谢谢。我尝试的第一件事就是'ax1.gca.add_artist(KIRKULOS [ct])'这当然是崩溃的。很高兴知道'gca'。 – Wapiti 2014-09-22 15:24:09