2014-12-02 2 views
1

Я использую только часть BokehJS Bokeh, так как я строю более ориентированную на производство систему. К сожалению, похоже, что фактическая часть BokehJS Bokeh не документирована так сильно, что затрудняет поиск необходимой информации, например, как форматировать данные для объекта bokehJS.dataformat для нескольких строк в bokehjs

То, что я пытаюсь сделать, это сделать простой линейный график, однако вместо того, чтобы иметь только одну строку, я хотел бы иметь несколько строк и возможность создания легенды, описывающей каждую строку. Это очень простой сюжет, однако я не нашел никакого способа сделать это в bokehJS. Для того, чтобы сделать сюжет с одной строки я выполнить следующий JavaScript:

Bokeh.Plotting.show(
     Bokeh.Plotting.make_plot({type:'line'}, {x:[1,2],y:[4,5]}, {}) 
     ,'.mydivcontainer'); 

Как я изменить это так, что я могу иметь 5 строк в том же участке, а также легенды, в основном похожа на это который записывается в стандартном боке:

из коллекций импорта OrderedDict импорта панд в э.р.

AAPL = pd.read_csv("aapl.csv", parse_dates=["Date"]) 
MSFT = pd.read_csv("msft.csv", parse_dates=["Date"]) 
IBM = pd.read_csv("ibm.csv", parse_dates=["Date"]) 

xyvalues = OrderedDict(
    AAPL = AAPL[("Date", "Adj Close")], 
    MSFT = MSFT[("Date", "Adj Close")], 
    IBM = IBM[("Date", "Adj Close")], 
) 
df = pd.concat(xyvalues, axis=1, names=["l0", "l1"]) 

from bokeh.charts import TimeSeries 
ts = TimeSeries(
    df, title="timeseries, pd_input", 
    filename="stocks_timeseries.html") 
ts.legend("top_left").show() 

(Взятые из записки выпуска: http://continuum.io/blog/bokeh-0.6)

Большое спасибо заранее за вашу помощь

ответ

1

это, безусловно, верно, что разработка и документирование интерфейса JS отставал от других интерфейсов (питон в основном, но и Скала и Джулия и вскоре R). Мы планируем улучшить это, но, как вы можете себе представить, есть много конкурирующих приоритетов.

Но я укажу еще один вариант, если он вам полезна. Можно создать участок JS из python, а затем напрямую использовать JS. То есть вы используете python только для настройки, тогда вы можете выбросить питон. Вы можете использовать функции в bokeh.embed, чтобы превратить ваш графический объект в python в JS, который вы можете вставить, как вам нравится.

С более новой версией Bokeh вы также можете легко захватить объекты сюжета (например, источники данных), чтобы обновить график непосредственно от JS. См, например:

https://github.com/bokeh/bokeh/blob/master/examples/embed/spectrogram/spectrogram.coffee#L187

+0

привет, извините за поздний ответ. Прежде всего - я не смог сказать спасибо за боке. Это отличный продукт, и я не смог найти ничего подобного на рынке - так что боке действительно хорошо, и я считаю, что есть пробел в доступных инструментах построения, которые могут покрыть боке. Я смотрел на создание библиотеки python-bokeh, как вы предполагали, но я не очень разбираюсь в кофейном скрипте ... и было бы действительно здорово на самом деле сделать это в bokehJS. Так не существует способа изменить код js выше, чтобы содержать несколько строк в любом случае? например. передать несколько строк в массиве данных? –

0

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

Bokeh.Plotting.show(
 
     Bokeh.Plotting.make_plot([{type:'line'},{type:'line'}], [{x:[1,2],y:[4,5]},{x:[1,4],y:[2,5]}], {}) 
 
     ,'.mydivcontainer');

Отлично :)

+0

FYI здесь - проблема GH, которую вы можете отслеживать (или добавлять к обсуждению) о интерфейсе JS: https://github.com/bokeh/bokeh/issues/1515 – bigreddot

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