W poniższej konfiguracji tworzę wykres obszarowy na podstawie podstawowego przykładu. Jak mogę automatycznie uzyskać legendę na mój wkład, a nawet programatycznie. Na razie mam tylko legendę z jednym przedmiotem "A" i pierwszym kolorem.

from bokeh.plotting import *

...
patches([x2 for a in areas], list(areas.values()), color=colors, alpha=0.8,
    line_color=None, legend='a', title="hello chart")

legend().orientation = "top_right" # what other options, may here?
show()

Jaki jest format przekazywania poprawek dla legendy jako wartości lub jak mogę wywołać legendę (), aby pokazać przedmiot i kolor dla każdego przedmiotu na działce?

0
rebeling 14 sierpień 2014, 00:48

2 odpowiedzi

Najlepsza odpowiedź

Znalazłem następujący komentarz w Bokeh i Bądź na bieżąco:

OK, te ręcznie rysowane legendy są całkiem niezgrabne, zostaną ulepszone w przyszłym wydaniu

To działa na razie:

hold() # stop the curplot() 
# and add the legend just next to the data
x, y = 15.5, 0
for i,area in enumerate(areas):
    rect([x], [y], color=colors[i], width=0.3, height=400)
    text([x], [y], text=area, angle=0, text_font_size="8pt", text_align="center", text_baseline="middle")
    y = y + 100

show()
2
ImportanceOfBeingErnest 14 marzec 2018, 10:42

Nie mam odpowiedzi za pomocą patches, ale możesz użyć wielu patch:

from bokeh.plotting import *

...
for a, area in enumerate(areas):
    p.patch(x2, areas[area], color=colors[a], legend=area, alpha=0.8, line_color=None)

show()

Co pokazuje legendę ładnie na każdy obszar.

2
joon 6 październik 2015, 23:29