гистограммы с накоплением в боке

Я рисую гистограммы с боке (http://docs.bokeh.org/en/latest/docs/user_guide.html). Это потрясающий инструмент, но в то же время я думаю, что в настоящее время он немного незрелый. У меня есть столбчатая диаграмма с 30 категориями по оси x и 40 классами, соответствующими каждой категории. Я не могу найти функцию, которая позволяет мне изменять цвета (цвета сейчас очень неоднозначны) и выравнивать легенду по верхнему краю. В качестве альтернативы, если можно открыть информационное окно, когда кто-то наводит курсор на этот цвет, это может быть полезно. Я не очень понимаю, можно ли это сделать.

http://docs.bokeh.org/en/latest/docs/user_guide/charts.html#bar

Мой пример похож на этот, за исключением того, что у меня много переменных.

Какие-либо предложения? ОБНОВЛЕНИЕ: я попробовал следующее решение, но похоже, что с Bar () возникла проблема. Он не распознает Bar ().

import bokeh.plotting as bp
data24 =OrderedDict()
for i in range(10):
    data24[i] = np.random.randint(2, size=10)
figut = bp.figure(tools="reset, hover") 
s1 = figut.Bar(data24, stacked= True,color=colors )
s1.select(dict(type=HoverTool)).tooltips = {"x":"$index"}

Запустив его, я получаю:

AttributeError: 'Figure' object has no attribute 'Bar'

Вот цвета полос, которые я получаю. Нет возможности различить цвета. введите описание изображения здесь


person pg2455    schedule 16.05.2015    source источник
comment
bokeh.plotting.figure возвращает объект PlotObject. Bar не является членом PlotObject, что объясняет ваше исключение. Bar, который вы ищете, можно импортировать с помощью from bokeh.charts import Bar.   -  person luke    schedule 29.05.2015


Ответы (2)


Я покопался в исходном коде боке, и мне кажется, что метод bokeh.charts.Bar будет исключать какое-то ключевое слово аргументы. Это могут быть свойства класса Builder, который включает свойство palette, определенное здесь. Вы должны иметь возможность передать это как аргумент Bar.

Bar(...,palette=['red','green','blue'],...)

Просто проверил это, изменив пример


И исходный вопрос, и другой ответ очень устарели. bokeh.charts API устарел и был удален много лет назад. Гистограммы с накоплением в современном стиле боке см. В разделе Обработка категориальных Данные

Вот полный пример:

from bokeh.core.properties import value
from bokeh.io import show, output_file
from bokeh.plotting import figure

output_file("stacked.html")

fruits = ['Apples', 'Pears', 'Nectarines', 'Plums', 'Grapes', 'Strawberries']
years = ["2015", "2016", "2017"]
colors = ["#c9d9d3", "#718dbf", "#e84d60"]

data = {'fruits' : fruits,
        '2015'   : [2, 1, 4, 3, 2, 4],
        '2016'   : [5, 3, 4, 2, 4, 6],
        '2017'   : [3, 2, 4, 4, 5, 3]}

p = figure(x_range=fruits, plot_height=250, title="Fruit Counts by Year",
           toolbar_location=None, tools="")

p.vbar_stack(years, x='fruits', width=0.9, color=colors, source=data,
             legend=[value(x) for x in years])

p.y_range.start = 0
p.x_range.range_padding = 0.1
p.xgrid.grid_line_color = None
p.axis.minor_tick_line_color = None
p.outline_line_color = None
p.legend.location = "top_left"
p.legend.orientation = "horizontal"

show(p)

введите описание изображения здесь

person bigreddot    schedule 20.10.2019