2016-11-27 2 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/how-to-put-the-legend-out-the-plot – ImportanceOfBeingErnest

ответ

0

Вы можете поэкспериментировать с помощью параметра bbox_to_anchor в plt.legend(). Это дает дополнительный контроль за местоположением:

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

Спасибо Мартину. Он работает, я очень ценю ваш ответ, извините, что название моего сообщения было немного ошибочным, но спасибо за понимание. –

+0

Добро пожаловать. Не забудьте нажать на серый тик под стрелкой вверх/вниз, чтобы принять ответ в качестве решения. –

Смежные вопросы