解决离线状态下使用PyEcharts进行数据可视化绘图时,pyecharts

您所在的位置:网站首页 离线保存的网页不联网打不开 解决离线状态下使用PyEcharts进行数据可视化绘图时,pyecharts

解决离线状态下使用PyEcharts进行数据可视化绘图时,pyecharts

2023-07-17 23:25| 来源: 网络整理| 查看: 265

前面在讲述我配置离线的Python数据分析和数据可视化环境虚拟机的时候,遇到了离线状态下使用PyEcharts进行数据可视化绘图时,html网页打不开、不出图的问题,经过两天的查找,发现主要原因(对,还有次要原因哈)是由于PyEcharts在升级到1.x版本后,将原来HTML网页中使用到的很多js文件换为了在线获取的方式,例如打开pyecharts-gallery-master\Bar文件夹里面的bar_base.html,就会发现利用了https://assets.pyecharts.org/assets/echarts.min.js文件,所以才会出现离线环境下打不开网页不出图的情况:

Awesome-pyecharts var chart_bfb8150f841b4ea486de8e3047d62ffc = echarts.init( document.getElementById('bfb8150f841b4ea486de8e3047d62ffc'), 'white', {renderer: 'canvas'}); var option_bfb8150f841b4ea486de8e3047d62ffc = { "animation": true, "animationThreshold": 2000, "animationDuration": 1000, "animationEasing": "cubicOut", "animationDelay": 0, "animationDurationUpdate": 300, "animationEasingUpdate": "cubicOut", "animationDelayUpdate": 0, "color": [ "#c23531", "#2f4554", "#61a0a8", "#d48265", "#749f83", "#ca8622",

知道了原因以后,下面就来看一下如何解决!其实在pyecharts-gallery-master官网上面已经给出了解决的方案:主要是2步:一是下载离线的js文件,也就是pyecharts-assets-master.zip文件,然后将其放到本地的某个文件夹里面;二是启动本地服务端,将解压后的pyecharts-assets-maste文件夹设为服务地址;三是修改绘图的py源文件,添加使用本地js地址的语句,具体操作如下:

一、下载pyecharts-assets-master.zip文件:https://github.com/pyecharts,这里面包含了大多数示例中所用到的js文件:

二、启动本地服务端,具体的方法官网里面也都讲了:https://github.com/pyecharts/pyecharts-assets

$ cd pyecharts-assets $ python -m http.server

上面是Linux中的写法,实际上在window环境下就是进入到pyecharts-assets文件夹里面后,按住shift键点击鼠标右键,打开控制台,运行

python -m http.server一句话即可,该命令将会在本地启动一个默认网址为0.0.0.0,默认端口为8000的广播服务器,从而可以开启js文件的服务;

其实,也不一定每次都非要进入到pyecharts-assets文件夹里面启动控制台然后运行启动服务器的命令,还可以利用-d选项设置目录,如下所示:

python -m http.server #在当前文件夹目录下默认启动地址为0.0.0.0,端口为8000的服务器 python -m http.server -d C:\Users\super\pyecharts-assets-master #指定一个自定义的本地目录 python -m http.server -d C:\Users\super\pyecharts-assets-master -b 127.0.0.1 8000 #指定自定义的本地目录,指定自定义的网址和端口

我就是利用第二句即可,这样不用每次都费力的进入到本地的pyecharts-assets文件夹里面了!

实际上也不一定非要0.0.0.0的网址,也可以选择127.0.0.1的本地回路地址,还有就是局域网里面的话,可以指定为局域网服务器的网址;

最后就是在python源文件中添加下面的两句,例如对于pyecharts-gallery-master\Bar中的bar_base.py文件,就是在最前面添加:

#LocalhostConfig # 配置CurrentConfig.ONLINE_HOST为本机地址资源 from pyecharts.globals import CurrentConfig CurrentConfig.ONLINE_HOST = "http://127.0.0.1:8000/assets/" from pyecharts import options as opts from pyecharts.charts import Bar from pyecharts.faker import Faker c = ( Bar() .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values()) .add_yaxis("商家B", Faker.values()) .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题")) .render("bar_base.html") )

这样在编译后,生成的HTML文件就会使用本机的js文件网址了:

Awesome-pyecharts var chart_9732f9fa310740bbb5c7dafaeba7ee90 = echarts.init( document.getElementById('9732f9fa310740bbb5c7dafaeba7ee90'), 'white', {renderer: 'canvas'}); var option_9732f9fa310740bbb5c7dafaeba7ee90 = { "animation": true, "animationThreshold": 2000, "animationDuration": 1000, "animationEasing": "cubicOut", "animationDelay": 0, "animationDurationUpdate": 300, "animationEasingUpdate": "cubicOut", "animationDelayUpdate": 0, "color": [ "#c23531", "#2f4554", "#61a0a8", "#d48265", "#749f83", "#ca8622", "#bda29a", "#6e7074",

这样就可以在离线环境下显示出图像了!

最后需要说明的是,如果不是想生成HTML网页,而是想在Jupyter Notebook中直接显示Echarts图像,就需要把上面的py源程序改为:

#LocalhostConfig # 配置CurrentConfig.ONLINE_HOST为本机地址资源 from pyecharts.globals import CurrentConfig CurrentConfig.ONLINE_HOST = "http://127.0.0.1:8000/assets/" from pyecharts import options as opts from pyecharts.charts import Bar from pyecharts.faker import Faker c = ( Bar() .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values()) .add_yaxis("商家B", Faker.values()) .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题")) ) c.render_notebook() #c.render("bar_base.html")

也就是需要在最后显示的调用一句:c.render_notebook(),不然,如果还是放在链式那个括号里面,例如下面的样子,有的时候还是不会出图的。。。

#LocalhostConfig # 配置CurrentConfig.ONLINE_HOST为本机地址资源 from pyecharts.globals import CurrentConfig CurrentConfig.ONLINE_HOST = "http://127.0.0.1:8000/assets/" from pyecharts import options as opts from pyecharts.charts import Bar from pyecharts.faker import Faker c = ( Bar() .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values()) .add_yaxis("商家B", Faker.values()) .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题")) .render_notebook() )

 

最后再预告一下下一篇:https://github.com/pyecharts/pyecharts-gallery中给出的可视化绘图的例子那么多——

显然依次去为每个*.py源程序都添加from pyecharts.globals import CurrentConfig CurrentConfig.ONLINE_HOST = "http://127.0.0.1:8000/assets/"命令从而再生成利用本地js资源的HTML网页无疑太过繁琐,如何一键就生成全部的本地HTML网页呢?请见下回分解!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3