在bokehjs中的多行数据格式

时间:2014-12-02 10:14:55

标签: javascript plot visualization bokeh continuum

我正在使用Bokeh的BokehJS部分,因为我正在构建一个更加面向生产的系统。 不幸的是,Bokeh的实际BokehJS部分似乎没有那么多记录,这使得很难找到所需的信息,例如如何格式化bokehJS对象的数据。

我要做的是制作一个简单的折线图,但不是只有一条线我想拥有多条线,而且可以制作描述每条线的图例。这是一个非常重要的情节,但我没有找到任何方法在bokehJS中做到这一点。 为了用单行创建一个图,我执行以下javascript:

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

我如何改变这一点,以便我可以在同一个情节和传奇中有5行,基本上类似于用标准散景写的:

来自集合导入OrderedDict     将pandas导入为pd

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

非常感谢您的帮助

2 个答案:

答案 0 :(得分:1)

确实,开发和记录JS接口已经落后于其他接口(主要是python,还有scala和Julia以及很快R)。我们计划改进这一点,但正如您可以想象的那样,有许多相互竞争的优先事项。

但我会提到另一个选项,以防它对你有用。可以从python创建绘图JS,然后直接使用JS。那就是你只使用python来设置,然后就可以把python扔掉了。您可以使用bokeh.embed中的函数将您的python plot对象图转换为JS,您可以根据自己的喜好嵌入它。

使用最新版本的Bokeh,您还可以轻松地抓取绘图对象(例如数据源)以直接从JS更新绘图。例如,见:

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

答案 1 :(得分: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');

很棒:)