从带有布局的图表创建独立的 HTML

我想创建一个独立的 HTML,其中包含几个基于布局的 Bokeh 交互式图形(如果可能)。


我已经成功地将每个图表创建为自己的 HTML 或 PNG。


我的图表是从函数单独生成的。这是一个例子。


from bokeh.plotting import figure, output_file, show


def create_scatter():

    # output to static HTML file

    output_file("test_scatter.html")

    p = figure(plot_width=400, plot_height=400, title='This is a Scatter chart')


    # add a circle renderer with a size, color, and alpha

    p.circle([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], size=20, color="navy", alpha=0.5)

    p.title.text_font_style = "italic"


    # show the results

    show(p)


    # Attemp to return the chart

    return p



def create_line():

    # output to static HTML file

    output_file("line.html")

    p = figure(plot_width=400, plot_height=400, title='This is a Line chart')


    # add a line renderer

    p.line([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], line_width=2)

    p.title.text_color = "olive"

    p.toolbar.logo = None # Hide Bokeh Logo


    # show the results

    show(p)


    # Attemp to return the chart

    return p



def create_HTML(f1, f2):

    pass



def main():

    f1 = create_scatter()

    f2 = create_line()

    create_HTML(f1, f2)



if __name__ == '__main__':

    main()

但是,我找不到将它们全部放在一个 HTML 文件中的方法。每个图表都有自己独特的标题、属性、图例和工具。


我的预期结果是基于布局创建一个独立的 HTML,可能可以修改其背景等。这是我的预期结果。

http://img2.mukewang.com/61e670a1000109b106330451.jpg

先感谢您



更新


我想我需要返回图表的组件


script, div = components(p, CDN)

return script, div

然后我需要将它们放入 HTML 字符串中。最后,输出文件。


慕莱坞森
浏览 165回答 1
1回答

天涯尽头无女友

你已经给自己答案了。使用components是实现它的一种方式。请查看Bokeh 嵌入文档以了解所有选项。如果您想要一个可以使用此方法的单个文件实现(使用 Bokeh 1.1.0 测试):from jinja2 import Templatefrom bokeh.plotting import figurefrom bokeh.embed import file_htmlfrom bokeh.models import Div, Paragraph, Row, Columnfrom bokeh.resources import CDNfrom bokeh.util.browser import viewtemplate = Template("""<!DOCTYPE html><html>&nbsp; &nbsp; <head>&nbsp; &nbsp; &nbsp; &nbsp; <meta charset="utf-8">&nbsp; &nbsp; &nbsp; &nbsp; <title>{{ title if title else "Bokeh Plot" }}</title>&nbsp; &nbsp; &nbsp; &nbsp; {{ bokeh_css | safe }}&nbsp; &nbsp; &nbsp; &nbsp; {{ bokeh_js | safe }}&nbsp; &nbsp; </head>&nbsp; &nbsp; <body>&nbsp; &nbsp; &nbsp; &nbsp; {{ plot_div | safe }}&nbsp; &nbsp; &nbsp; &nbsp; {{ plot_script | safe }}&nbsp; &nbsp; </body></html> """)p1 = figure(plot_width = 400, plot_height = 400)p2 = figure(plot_width = 400, plot_height = 400)p3 = figure(plot_width = 800, plot_height = 400)p1.circle([1, 2, 3], [4, 5, 6])p2.line([1, 2, 3], [4, 5, 6])p3.line([1, 2, 3], [4, 5, 6])html = file_html(Column(Row(p1, p2), Row(p3)), template = template, resources = CDN)output_file = 'css_classes.html'with open(output_file, 'w') as f:&nbsp; &nbsp; f.write(html)view(output_file)结果:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python