Google 可视化库 Facets:如何将 python 模块“facets”输出 html 离线保存到本地驱动器?

Posted

技术标签:

【中文标题】Google 可视化库 Facets:如何将 python 模块“facets”输出 html 离线保存到本地驱动器?【英文标题】:Google Visualization library Facets : How to save python module "facets" output html to local drive offline? 【发布时间】:2019-11-18 02:01:41 【问题描述】:

最近我发现了python可视化库“Facets”,想知道我是否可以离线生成html输出。

我使用的是chrome浏览器,不需要webcomponents-lite.js。 另外,我已经在我的 MacOS 中使用自制软件安装了 bazel。 我已将“facets-dist”文件夹从 facets 官方仓库复制到 jupyter 路径 ~/.ipython/nbextensions/

有用的链接: - https://github.com/PAIR-code/facets - https://colab.research.google.com/github/PAIR-code/facets/blob/master/colab_facets.ipynb

我的尝试:

import numpy as np
import pandas as pd
from IPython.core.display import display, HTML


df = pd.DataFrame('a':[10,20],'b':[100,200])
jsonstr = df.to_json(orient='records')

HTML_TEMPLATE = """<link rel="import" href="/nbextensions/facets-dist/facets-jupyter.html">
        <facets-dive id="elem" ></facets-dive>
        <script>
          var data = jsonstr;
          document.querySelector("#elem").data = data;
        </script>"""

html_str = HTML_TEMPLATE.format(jsonstr=jsonstr)

# write the html to a file
with open('output.html', 'w') as f:
    f.write(html_str)
    #f.write(HTML(html_str).data)

!open output.html

它会创建一些 output.html 文件,但不显示任何可视化。如何创建正确的输出 html?

【问题讨论】:

我不知道该怎么做(并且会对解决方案非常感兴趣!)但是规避问题的一种方法是创建一个笔记本,显示您的变量 HTML_TEMPLATE 并使用 jupyter 命令行jupyter nbconvert --to html facets-dive.ipynb。生成的 html 文件将包含您的可视化。 【参考方案1】:

实际上是可以做到的。您的代码中的问题来自以下几行:

HTML_TEMPLATE = """<link rel="import" href="/nbextensions/facets-dist/facets-jupyter.html">
        <facets-dive id="elem" ></facets-dive>
        <script>
          var data = jsonstr;
          document.querySelector("#elem").data = data;
        </script>"""

你现在应该使用这个HTML_TEMPLATE

HTML_TEMPLATE = """<script src="https://cdnjs.cloudflare.com/ajax/libs/webcomponentsjs/1.3.3/webcomponents-lite.js"></script>
            <link rel="import" href="https://raw.githubusercontent.com/PAIR-code/facets/1.0.0/facets-dist/facets-jupyter.html">
            <facets-dive id="elem" ></facets-dive>
            <script>
              var data = jsonstr;
              document.querySelector("#elem").data = data;
            </script>"""

其余的代码看起来不错

【讨论】:

以上是关于Google 可视化库 Facets:如何将 python 模块“facets”输出 html 离线保存到本地驱动器?的主要内容,如果未能解决你的问题,请参考以下文章

facets学习:什么是facets

了解数据可视化|Facets

R语言ggplot2可视化按照因子排序(order of facets)可视化分组多子图(facet面图)实战

R语言ggplot2可视化分面图(faceting)在所有的分面中添加相同的参考基准曲线(overlay a base or reference plot to all facets )

如何在 Google Colab 中编辑和保存文本文件 (.py)?

如何将复杂格式应用于 Google 可视化图表的垂直轴?