2014-07-09 4 views
5

EDYCJA: Proszę zauważyć, że składnia kodu przykładowego poniżej jest nieaktualna, od bardzo wczesnej wersji Bokeh.Jak ustawić czcionkę legendy Bokeh?


Jak zdefiniować czcionkę używaną do oznaczania wszystkiego? Tylko wymyśliłem, jak zmienić czcionkę tytułu, znaczników i osi, ale jak mogę zmienić czcionkę legendy?

Oto działający przykład do testowania zmian.

from bokeh.plotting import * 
from bokeh.sampledata import periodic_table 
import pandas as pd 

elements = periodic_table.elements 
elements = elements[elements['atomic number'] <= 82] 
elements = elements[~pd.isnull(elements['melting point'])] 
mass = [float(x.strip('[]')) for x in elements['atomic mass']] 
elements['atomic mass'] = mass 

palette = list(reversed([ 
    '#67001f','#b2182b','#d6604d','#f4a582','#fddbc7','#f7f7f7','#d1e5f0','#92c5de','#4393c3','#2166ac','#053061' 
])) 

melting_points = elements['melting point'] 
low = min(melting_points) 
high= max(melting_points) 
melting_point_inds = [int(10*(x-low)/(high-low)) for x in melting_points] #gives items in colors a value from 0-10 
meltingpointcolors = [palette[i] for i in melting_point_inds] 

output_file("elements.html", title="elements.py example") 

hold() 

circle(elements['atomic mass'], elements['density'] , 
     color=meltingpointcolors, plot_width=1200, line_color='black',fill_alpha=0.8, 
     size=12, title='Density vs Atomic Weight of Elements (colored by melting point)', legend="circle", 
     title_text_font="times", background_fill= '#cccccc', tools='pan, wheel_zoom, box_zoom, reset') 

text(elements['atomic mass'], elements['density'] +0.3, 
    text=elements['symbol'],angle=0, text_color='#333333', 
    text_align="center", text_font_size="10pt", text_font="times") 

xaxis().axis_label='atomic weight (amu)' 
yaxis().axis_label='density (g/cm^3)' 
grid().grid_line_color='white' 
axis().axis_label_text_font="times" 
show() 

Odpowiedz

5

Musisz dostać Ahold obiektu Legend (ów) obecnego działki, które mogą być wykonane z atrybutem legend działki, a następnie ustawić właściwość label_text_font:

plot.legend.label_text_font = "times" 

notatka tych nazw mienia może zostać skrócone/uproszczone w najbliższej przyszłości.

4

dodatkowa informacja dla tych, którzy tę stronę, szukając „jak przenieść legendę do innego rogu?”:

legend().orientation = "top_left" 

acceptables warunki top_left, top_right, bottom_left i bottom_right.

6

Próbowałem proponowana:

p.legend().label_text_font = "times" 

ale mam błąd:

TypeError: '_list_attr_splat' object is not callable 

jednak to działało dobrze, gdy wyszedłem na zewnątrz nawiasów:

p.legend.label_text_font = "times" 

Jeśli label_text_font jest nie tego, co chcesz, możesz często uzyskać listę dostępnych atrybutów dla legendy lub inny obiekt "list_attr_splat" t, poprzez indukowanie super pomocny wiadomość błędzie:

p.legend.blah = "foo" 

AttributeError: unexpected attribute 'blah' to Legend, 
possible attributes are border_line_alpha, border_line_cap, 
border_line_color, border_line_dash, border_line_dash_offset, 
border_line_join, border_line_width, glyph_height, glyph_width, 
label_height, label_standoff, label_text_align, label_text_alpha, 
label_text_baseline, label_text_color, label_text_font, 
label_text_font_size, label_text_font_style, label_width, 
legend_padding, legend_spacing, legends, name, orientation, 
plot, session or tags 
+0

Dzięki! "label_text_font_size" jest tym, o co prosiłem. Nie jest to udokumentowane tutaj: http://bokeh.pydata.org/en/latest/docs/user_guide/styling.html –