交互式Pygal图表在Jupyter笔记本中呈现

时间:2018-10-29 15:39:28

标签: python charts jupyter-notebook render pygal

我试图在Jupyter Notebook中绘制交互式Pygal图表,但没有成功。我不是在寻找静态的图像静态版本解决方案,该解决方案很好,但是对于具有交互式工具提示的解决方案。

此问题先前已解决:

但是不幸的是,没有人遇到我的问题:实施这些链接中提供的解决方案Jupyter似乎无法正确呈现图表,而output却是一个很长的字符串。 没有错误产生。

我想念什么?

1 个答案:

答案 0 :(得分:0)

我不会假装为什么,但是切换到Unicode字符串可以解决此问题。这可能就是为什么很少有人遇到此问题的原因:在Python 3中,默认情况下所有字符串都是Unicode。

您需要通过使用u为字符串加上前缀来将模板声明为Unicode文字。然后通过将is_unicode=True作为参数传递给render函数,告诉pygal在渲染图表时返回Unicode。

一个例子:

from IPython.display import HTML
import pygal

html_pygal = u"""
    <!DOCTYPE html>
    <html>
        <head>
            <script type="text/javascript" src="http://kozea.github.com/pygal.js/javascripts/svg.jquery.js"></script>
            <script type="text/javascript" src="http://kozea.github.com/pygal.js/javascripts/pygal-tooltips.js"></script>
        </head>
        <body><figure>{pygal_render}</figure></body>
    </html>
"""

line_chart = pygal.Line()
line_chart.title = "Browser usage evolution (in %)"
line_chart.x_labels = map(str, range(2002, 2013))
line_chart.add("Firefox", [None, None, 0, 16.6, 25, 31, 36.4, 45.5, 46.3, 42.8, 37.1])
line_chart.add("Chrome", [None, None, None, None, None, None, 0, 3.9, 10.8, 23.8, 35.3])
line_chart.add("IE", [85.8, 84.6, 84.7, 74.5, 66, 58.6, 54.7, 44.8, 36.2, 26.6, 20.1])
line_chart.add("Others", [14.2, 15.4, 15.3, 8.9, 9, 10.4, 8.9, 5.8, 6.7, 6.8, 7.5])
HTML(html_pygal.format(pygal_render=line_chart.render(is_unicode=True)))