2014-02-24 28 views
3

我有一個使用Matplotlib的許多腳本的項目。我想爲這個項目構建一個Web界面。如何在變色龍模板中放置散焦圖表?

如何在變色龍模板內放置散景圖?如果有問題,我使用Pyramid和Deform bootstrap。

有沒有人有一個很好的例子呢?

+0

您是使用靜態圖還是想要嵌入Brokeh JS庫? –

+0

我正在尋找互動的東西。我有一堆代碼使用Matplotlib編寫來生成繪圖。我剛剛發現這個http://jakevdp.github.io/blog/2014/01/10/d3-plugins-truly-interactive/。這似乎是一種更好的方式,因爲我不需要使用matplotlib來重寫所有代碼。無論哪種方式,我需要了解如何將圖表注入變色龍模板。 – EnergyGeek

回答

2

這裏有幾個不同的問題需要解決。

  1. 如果你是真正想端口很多Matplotlib地塊爲互動JS,那麼它可能的mpld3項目是一個非常適合你。但是,您應該知道,通過使用D3,會有性能影響,具體取決於您的情節中有多少個點。 Bokeh現在也有基本的Matplotlib支持,只會越來越多。 Jake目前正在將mpld3項目重構爲一個顯式導出器,然後是D3渲染器,而且我們也將潛在地構建用於Bokeh Matplotlib支持的這項工作。

  2. 要使用Bokeh完成此操作,您可以通過查看例如實施了HTMLFileSession.dumps()https://github.com/ContinuumIO/bokeh/blob/master/bokeh/session.py#L295。默認模板是bokeh/templates/base.html;但是,這是一個完整的HTML文件,而不是片段。 dumps()方法非常簡單,缺省模板也是如此,所以你應該能夠從看看這些方面得到你需要的東西。希望下一個版本,我們將完成一個HTMLFragmentSession,這將更容易嵌入。

+0

好吧,這聽起來像我需要等到Bokeh變得更成熟。我設法讓mpld3工作。這非常簡單,我只需要編輯幾行代碼就可以在瀏覽器中顯示我的原始Matplotlib腳本。將它注入變色龍模板與調用fig_to_d3()一樣簡單。也就是說,我正在處理分鐘數據。你會建議什麼比D3更快? – EnergyGeek

2

你想使用plot.create_html_snippet。該函數返回您想要在HTML中出現的代碼,函數還會寫出一個嵌入文件。

這是一個嵌入代碼段是什麼樣子

<script src="http://localhost:5006/static/dc0c7cfd-e657-4c79-8150-6a66be4dccb8.embed.js" bokeh_plottype="embeddata" bokeh_modelid="dc0c7cfd-e657-4c79-8150-6a66be4dccb8" bokeh_modeltype="Plot" async="true"></script>

以下參數控制嵌入文件是怎麼寫出來,其中用於嵌入文件中的js代碼搜索。 embed_base_url控制的URL路徑(也可以是絕對或相對)表明,JavaScript將搜索嵌入文件。

embed_save_loc控件,蟒蛇將寫出嵌入文件的目錄。embed_save_loc是沒有必要的,當服務器= True

static_path controls javascript路徑(它可以是絕對的或相對的),javascript將用它來爲bokeh.js和bokeh.css構造URLS。它默認爲http://localhost:5006/static/,但可以輕鬆指向CDN

運行散景服務器時,導航至http://localhost:5006/bokeh/generate_embed/static。我認爲這需要你由於錯誤而在主人身上運行。

我希望這會有所幫助。

+0

感謝您的回覆。現在我得到mpld3爲我工作。這將是一段時間,直到我回到我的申請的這部分。當我這樣做時,我一定要試一試。 – EnergyGeek