2016-12-16 1 views
0

中(アーティストの)アニメーションの凡例を追加します。私はこのような一連の画像からアニメーション(10個のスナップショット)作った:今、私は、各画像に凡例を追加したいenter image description hereはmatplotlibの

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib.patches import Circle 
import time 

infile = open ('out.txt') 

frame_counter = 0 

N_p = 100 
N_step = 10 
N_line = N_p*N_step 

for s in xrange(N_step): 
     x, y = [], [] 
     for i in xrange(N_p): 
       data = infile.readline() 
       raw = data.split() 
       x.append(float(raw[0])) 
       y.append(float(raw[1])) 

     xnp = np.array(x) 
     ynp = np.array(y) 

     fig = plt.figure(0) 
     ax = fig.add_subplot(111, aspect='equal') 
     for x, y in zip(xnp, ynp): 

       cir = Circle(xy = (x, y), radius = 1) 
       cir.set_facecolor('red') 
       ax.add_artist(cir) 
       cir.set_clip_box(ax.bbox) 

       ax.set_xlim(-10, 150) 
       ax.set_ylim(-10, 150) 
     fig.savefig("step.%04d.png" % frame_counter) 
     ax.remove() 
     frame_counter +=1 

をタイムステップを示しています。 これを行うには、これらの10枚の画像のそれぞれに凡例を設定する必要があります。問題は...私はax.set_labelcir.set_label、などの異なるものをテストしているということです 、私はこのようなエラーを取得:このエラーによると

UserWarning: No labelled objects found. Use label='...' kwarg on individual plots 

を私は自分にラベルを追加する必要があります個々のプロットが、これはアーティストのプロットなので、私はこれをどのように行うことができるのか分かりません。

+0

ドットが1つしか表示されない場合は、なぜここに凡例が必要ですか? – ImportanceOfBeingErnest

+0

アニメーションに時間を表示したいと思います。 – user252935

+0

私は洗練させてみましょう:1つのタイプのドットしか表示されていない場合、アニメーションに時間を表示するために伝説が必要なのはなぜですか? – ImportanceOfBeingErnest

答えて

1

何らかの理由でlegendが必要な場合は、サークルをハンドルとして表示し、ラベルとしてテキストを使用できます。

ax.legend(handles=[cir], labels=["{}".format(frame_counter)]) 

あなたが本当に伝説を必要としない場合は、あなただけの軸の内側に配置するために、いくつかのtextを使用することができます。

ax.text(.8,.8, "{}".format(frame_counter), transform=ax.transAxes)