上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 案例运行结果
由于在线绘图和离线绘图的绘图结果没有什么不同,所以对于在线绘图,读者可以自己动手修改代码。