2016-05-27 18 views
0

私は3つのカテゴリのうちの1つに属する9行をプロットしようとしていますが、9の代わりに3つのラベルだけを表示したいのですが、今のコードはPythonの凡例ラベルを式

tau = np.array([.1, .2, .3]) 
num_repeats = 3 
plot_colors = ['r-','b-','k-'] 
labels = ['tau = 0.1','tau = 0.2','tau = 0.3'] 
plot_handles=[None]*3 

for k in np.arange(tau.size): 
    for ell in np.arange(num_repeats): 
    (_, _, n_iter, history,_) = opti.minimise (theta0, f_tol=f_tol, theta_tol = theta_tol, tau=tau[k], N=3,report=50000, m=1) 
    true_energy = -59.062 
    error = np.absolute(true_energy - history[:,num_p]) 
    plot_handles[k] = plt.plot(np.arange(0,n_iter),error,plot_colors[k],'label'=labels[k]) 

plt.xlabel('Iteration') 
plt.ylabel('Absolute Error') 
plt.yscale('log') 
plt.legend(handles=plot_handles) 
plt.show() 

'label'キーワードを式にすることはできないというエラーが表示されます。誰かがこれを行う方法を知っていますか?前もって感謝します!これを達成するための

-Jim

+2

の前後に引用符 ' 'label''を取り出し、kwargはちょうど'ラベル=ラベル[K] 'と呼ばれるべき –

答えて

1

1つのトリックは、内側のループ内の1つのプロットのラベルを設定するだけにあります。次のコードでは、labelは唯一の非空でell==0場合:

tau = np.array([.1, .2, .3]) 
num_repeats = 3 
plot_colors = ['r-','b-','k-'] 
labels = ['tau = 0.1','tau = 0.2','tau = 0.3'] 
plot_handles=[None]*3 

for k in np.arange(tau.size): 
    for ell in np.arange(num_repeats): 
    (_, _, n_iter, history,_) = opti.minimise (theta0, f_tol=f_tol, theta_tol = theta_tol, tau=tau[k], N=3,report=50000, m=1) 
    true_energy = -59.062 
    error = np.absolute(true_energy - history[:,num_p]) 
    if ell == 0: 
     label = labels[k] 
    else: 
     label = '' 
    plot_handles[k] = plt.plot(np.arange(0, n_iter), error, plot_colors[k], label=label) 

plt.xlabel('Iteration') 
plt.ylabel('Absolute Error') 
plt.yscale('log') 
plt.legend(handles=plot_handles) 
plt.show() 
関連する問題