是否可以使用Pyspark解释器在Zeppelin中内联显示散景图?
在Jupiter中,例如可以使用命令output_notebook()
来加载散景js。
以下是生成简单折线图的示例。
from bokeh.io import output_notebook, show
from bokeh.plotting import figure
output_notebook()
# create a new plot
p = figure(plot_width=400, plot_height=400, title="Simple Line Plot")
# add a line renderer
p.line([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], line_width=2)
show(p) # show the results
答案 0 :(得分:2)
实际上已注册发布此内容 - 我试图让它发挥作用,但遇到了一些有趣的问题。
看来Bokeh笔记本输出依赖于IPython笔记本,而zeppelin可能不会。
对于静态输出,Zeppelin中没有很多IPython笔记本常用的资源。
我尝试了一种可能最终起作用的解决方法 - Zeppelin有一些可用于渲染Bokeh HTML文件的Angular标记。
我刚刚将其与以下内容联系起来:
s = "%html "
txt = open('log_lines.html').read()
s += txt
print(s)
编辑:您仍然需要在图形/对象上调用show()来创建要显示的文件。这似乎不会产生错误,但我仍然对Bokeh很新。
答案 1 :(得分:0)
我需要为我的项目制作和弦情节并成功调整散景样本以在pyspark和Zeppelin的python解释器中运行。对Zeppelin的支持仍然需要一些爱,但对我的目的来说效果很好。
%pyspark
import matplotlib as mpl
mpl.use('Agg')
import pandas as pd
from bokeh.charts import Chord
from bokeh.io import show, output_file, output_notebook
from bokeh.sampledata.les_mis import data
nodes = data['nodes']
links = data['links']
nodes_df = pd.DataFrame(nodes)
links_df = pd.DataFrame(links)
source_data = links_df.merge(nodes_df, how='left', left_on='source', right_index=True)
source_data = source_data.merge(nodes_df, how='left', left_on='target', right_index=True)
source_data = source_data[source_data["value"] > 5] # Select those with 5 or more connections
chord_from_df = Chord(source_data, source="name_x", target="name_y", value="value")
#output_file('chord_from_df.html')
output_notebook(notebook_type='zeppelin')
show(chord_from_df)
答案 2 :(得分:0)
如果您使用的是Bokeh> = 0.12.7,则可以使用Jeff Zhang的bkzep
包。例如,在Zeppelin外面这样做:
pip install bkzep
然后,就像在https://github.com/zjffdu/bkzep#how-to-use所说的那样,你只需要在绑定到Spark解释器组的Zeppelin笔记本中执行此操作:
from bokeh.io import output_notebook
import bkzep
output_notebook(notebook_type='zeppelin')
然后你应该可以在你的笔记本中看到内嵌的Bokeh图。我可以使用Bokeh 0.12.13确认这在Zeppelin 0.7.0中有效。例如: