2014-10-08 9 views
18

Qualcuno sa come trasportare la legenda in bokeh all'esterno del del grafico? L'unica manipolazione che potevo fare era di scegliere una posizione tra:Posizione della legenda in un grafico Bokeh

top_right, top_left, bottom_left or bottom_right 

utilizzando:

legend()[0].orientation = "bottom_left" 

e quando provo quelli diversi ottengo il messaggio di errore:

ValueError: invalid value for orientation: 'outside'; allowed values are top_right, top_left, bottom_left or bottom_right 
+0

Una questione strettamente correlati a questo: come mantenere le proporzioni degli assi originali? –

risposta

11

partire dal Bokeh 0.12.4 è possibile posizionare legende al di fuori dell'area del tracciato centrale. Ecco un breve esempio from the user's guide:

import numpy as np 
from bokeh.models import Legend 
from bokeh.plotting import figure, show, output_file 

x = np.linspace(0, 4*np.pi, 100) 
y = np.sin(x) 

output_file("legend_labels.html") 

p = figure(toolbar_location="above") 

r0 = p.circle(x, y) 
r1 = p.line(x, y) 

r2 = p.line(x, 2*y, line_dash=[4, 4], line_color="orange", line_width=2) 

r3 = p.square(x, 3*y, fill_color=None, line_color="green") 
r4 = p.line(x, 3*y, line_color="green") 

legend = Legend(items=[ 
    ("sin(x)", [r0, r1]), 
    ("2*sin(x)", [r2]), 
    ("3*sin(x)", [r3, r4]) 
], location=(0, -30)) 

p.add_layout(legend, 'right') 

show(p) 

Per regolare la posizione, modificare dx e dy in location=(dx, dy). più

enter image description here

+0

Come dovrei farlo quando utilizzo l'API dei grafici? – kynan

+0

Richiederebbe spostare la posizione del layout, cosa non banale da fare al momento. Suggerirei di portare questo tipo di domanda alla mailing list, perché potrebbero essere necessari alcuni esperimenti e discussioni avanti e indietro per capirlo. – bigreddot

+0

Avevo [archiviato un problema per tale funzione] (https://github.com/bokeh/bokeh/issues/4941). – kynan