Python数据分析:基于Plotly的动态可视化绘图
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.6 使用离线绘图库

通过前面的案例,我们可以看到Plotly的绘图结果虽然美观,但是绘图速度太慢,原因是Plotly的服务器在国外,国内用户使用Plotly的在线绘图会有网络延迟。如果仅有在线绘图,恐怕Plotly不会发展得这么快,一是如果用户都使用在线绘图,会导致官方的服务器压力增大,这样免费服务无法长久维持下去或体验越来越差;二是这种绘图速度国内用户是无法接受的,所以开源的动态绘图模块Plotly支持离线绘图功能。

Plotly的离线绘图功能允许在没有网络的情况下绘图,并把图像保存到本地。有两种方法可以实现上述功能:plotly.offline.plot ()和plotly.offline.iplot ()。

●使用plotly.offline.plot ()方法会在本地新建一个HTML文件,并可以选择是否在浏览器中打开这个文件。

●使用plotly.offline.iplot ()方法会在Jupyter Notebook中直接绘图,而不需要新建一个HTML文件。

案例代码如下(见文件Chapter01/first_offline_start.py)。

        import plotly as py
        from plotly.graph_objs import Scatter, Layout, Data

        trace0 = Scatter(
            x=[1, 2, 3, 4],
            y=[10, 15, 13, 17]
        )
        trace1 = Scatter(
            x=[1, 2, 3, 4],
            y=[16, 5, 11, 9]
        )
        data = Data([trace0, trace1])

        py.offline.plot(data, filename = 'first_offline_start')

运行以上代码,结果如图1-8所示。

图1-8 案例运行结果

在Jupyter Notebook中需要注意的是,这里需要添加一个初始化步骤,在开始绘图之前要加入一行代码。

        plotly.offline.init_notebook_mode()

详细代码如下(见文件Chapter01/first_offline_start.ipynb)。

        import plotly as py
        from plotly.graph_objs import Scatter, Layout, Data

        py.offline.init_notebook_mode()

        trace0 = Scatter(
            x=[1, 2, 3, 4],
            y=[10, 15, 13, 17]
        )
        trace1 = Scatter(
            x=[1, 2, 3, 4],
            y=[16, 5, 11, 9]
        )
        data = Data([trace0, trace1])

        py.offline.iplot(data, filename = 'first_offline_start')

代码运行结果如图1-9所示,与上一个案例的输出效果一样。

图1-9 案例运行结果

由于在线绘图和离线绘图的绘图结果没有什么不同,所以对于在线绘图,读者可以自己动手修改代码。