2.1 基础案例解读
下面通过案例介绍在Python语言中使用Plotly绘图模块库。由于使用在线绘图模式绘图速度较慢,而且使用在线绘图模式需要注册账号,所以这里只介绍离线绘图模式。
案例2-1的文件名是first_start_introduction.py,讲解使用Plotly绘图模块库进行最简单的绘图。
为了便于逐行讲解案例,此处采用直接截图的方式展示代码,如图2-1所示。
图2-1 案例2-1代码截图
案例2-1代码逐行说明如下。
●第1行,说明该代码文件使用的是UTF-8编码格式,也是Python的例行文件头。
●第2~4行,导入(import)所需的模块库。
●第6行,定义一个名为trace0的变量,用于保存绘图数据;Plotly一般称一个绘图对象为trace(画痕、画轨、画迹);每个绘图对象都由Plotly模块库里面的graph_objs(图像对象)子模块的Scatter(数据布局)对象定义;Scatter对象的输入数据与Plotly绘图模块库中的许多函数和对象一样,都是字典格式,而且接受多种复杂的复合字典格式。
●第7~8行,定义变量trace0的x和y坐标,坐标采用列表数据格式,坐标x、y的数据长度必须一样,不然会出现空缺坐标;其中的x、y字符是Plotly模块库Scatter对象的内部变量名称,类似关键字。
●第10~12行,定义另外一条曲线trace1的坐标数据,细节参见第6~8行的说明。
●第14行,定义一个变量名data,通过pygo模块库的Data函数,把代表两条曲线的变量trace0和trace1定义为一组图形数据,注意Data函数的输入参数是列表数据格式,所以要在变量trace0和trace1外面加上表示列表的“[]”符号。
●第16行,根据data变量的数据绘制图形。若代码无误,正确运行后,程序会自动调用浏览器,打开生成的图形,并提供互动显示,运行结果如图2-2所示。
图2-2 案例2-1 运行结果
●第20行,运行结束后,输出“ok”信息。本程序运行后,输出的图形是通过浏览器显示的,有时浏览器在后台,不知道程序运行已经完成,所以在程序最后增加了一行运行结束的提示信息。
案例2-1的第17行和第18行代码表示不同的输出模式,下面详细说明。
第16行中的filename参数,文件名格式必须以“.html”为后缀,以“.htm”为后缀会出错,读者可以尝试一下。
运行第17行和第18行代码时,请先屏蔽第16行代码,以免混乱。
第17行不使用filename参数定义文件名,Plotly模块库会自动在当前代码目录下生成一个名为temp-plot.html的文件,并自动用浏览器打开。对于多个图形,Plotly模块库会生成多个HTML文件,再用浏览器自动打开,用户需要自己设置文件名,否则新的图形文件会覆盖旧的图形文件。
第18行使用image参数,设置输出的静态图片格式为PNG格式,image参数支持PNG、JPEG、SVG、WebP格式,默认是None(无)。
与其他绘图模块库不同,Plotly生成的不是图形文件,而是一个内置JavaScript脚本的HTML网页文件,最终的图像文件需要调用浏览器的渲染引擎才能生成。
用户设置image图形输出格式后,浏览器会弹出一个下载图片对话框,需要用户手动保存输出的图形,如图2-3所示。
图2-3 下载图片对话框
可能因为Plotly绘图模块库重点是云端及商业用户,所以对离线用户有些限制,这也算是目前Plotly的一个小bug,希望未来的版本能够改进。