2016-11-27 8 views
0

私のラベルをPythonの別のボックスの私のプロットの上に置きたい。次のように私の既存のプロットが見えます:ここでプロットを繰り返す

my plot

は私のコードです:

fig = plt.figure() 
plt.plot(t, sol[:,0], 'blue', lw = 3, label='$N$') 
plt.plot(t, sol[:,1], 'green', lw = 3, label='$P$') 
plt.plot(t, sol[:,2], 'red', lw = 3, label='$Z$') 
plt.plot(t, sol[:,3], 'black', lw = 3, label='$Z$') 
plt.legend(loc='best') 
plt.xlabel('Time (days)', fontsize=10.) 
plt.ylabel('$N,P,Z,D$ ($\mu$mol N L$^{-1}$)', fontsize=10.) 
plt.xlim([0.,365.*sim_years]) 
plt.ylim([0,16]) 
plt.xticks(fontsize=10.) 
plt.yticks(fontsize=10.) 
plt.grid() 
plt.show() 

私はラベルは次のようになりたい:

Expected label

+1

[Matplotlibの自動伝説の外のプロット]の可能な複製(http://stackoverflow.com/questions/30413789/matplotlib-automatic-legend-outside-plot) – ImportanceOfBeingErnest

+0

またはおそらくhttp://stackoverflow.com/questionsの複製/ 4700614 /プロンプトを伝える方法 – ImportanceOfBeingErnest

答えて

0

。これは、あなたの場所の上に余分なコントロールを提供します:

import matplotlib.pyplot as plt 
import numpy as np 

# Demo data 
sol = np.array([[3,3,4,3], [1,4,2,7], [2,5,3,10], [3,6,4,15], [5,8,2,14]]) 
t = [100, 200, 300, 400, 500] 

fig = plt.figure() 
plt.plot(t, sol[:,0], 'blue', lw = 3, label='$N$') 
plt.plot(t, sol[:,1], 'green', lw = 3, label='$P$') 
plt.plot(t, sol[:,2], 'red', lw = 3, label='$Z$') 
plt.plot(t, sol[:,3], 'black', lw = 3, label='$Z$') 
plt.legend(loc='upper center', ncol=4, bbox_to_anchor=(0.5, 1.1)) 
plt.xlabel('Time (days)', fontsize=10.) 
plt.ylabel('$N,P,Z,D$ ($\mu$mol N L$^{-1}$)', fontsize=10.) 
#plt.xlim([0.,365.*sim_years]) 
plt.ylim([0,16]) 
plt.xticks(fontsize=10.) 
plt.yticks(fontsize=10.) 
plt.grid() 
plt.show() 

次のようにこれが表示されます:ここで

Demo plot with legend external to the plot

bbox_to_anchor=(0.5, 1.1)1.0がトップにいると、水平方向に沿って半分の方法を意味し、そう1.1だけであること上部の上にncols=4は、水平に表示するために使用されます。

+0

Martinに感謝します。それはうまくいきます。私の投稿のタイトルはちょっと誤解を招いていましたが、ご理解いただきありがとうございます。 –

+0

ようこそ。上下の矢印の下にある灰色の目盛りをクリックして、解決策として回答を受け入れることを忘れないでください。 –

関連する問題