解决离线状态下使用PyEcharts进行数据可视化绘图时,pyecharts-gallery示例库中的所有html网页打不开、不出图的问题

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

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Awesome-pyecharts</title>
            <script type="text/javascript" src="https://assets.pyecharts.org/assets/echarts.min.js"></script>

</head>
<body>
    <div id="bfb8150f841b4ea486de8e3047d62ffc" class="chart-container" style="width:900px; height:500px;"></div>
    <script>
        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文件网址了:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Awesome-pyecharts</title>
            <script type="text/javascript" src="http://127.0.0.1:8000/assets/echarts.min.js"></script>

</head>
<body>
    <div id="9732f9fa310740bbb5c7dafaeba7ee90" class="chart-container" style="width:900px; height:500px;"></div>
    <script>
        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网页呢?请见下回分解!

  • 5
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据引用\[1\]和引用\[2\]的内容,你提到使用pyecharts进行可视化,数据在控制台打印正常,但在赋值给pyecharts后,生成的html文件中数据变成了null。这可能是由于数据传递的问题导致的。 在引用\[2\]的代码中,你使用了Map类来创建地,并通过add方法将数据添加到地中。然后,你设置了全局选项和可视化选项,并将结果渲染为html文件。 然而,根据你的描述,数据在赋值给pyecharts后变成了null。这可能是因为你在add方法中传递的数据格式不正确,导致pyecharts无法正确解析数据。 请确保你传递给add方法的数据是正确的格式。根据你的代码,你使用了一个字典(dic)来存储数据,并通过zip函数将键和值组合在一起。然后,你将这些组合后的数据传递给add方法。 请确保字典(dic)中的键和值都是正确的数据类型,并且在传递给add方法之前,数据格式是正确的。你可以在控制台打印出数据,确保数据的格式和内容是正确的。 另外,你还可以尝试使用其他方法来传递数据给pyecharts,例如使用DataFrame或列表等数据结构。 总结一下,如果你在使用pyecharts进行可视化,数据在生成的html文件中显示为null,请确保传递给add方法的数据格式正确,并且数据类型是正确的。如果问题仍然存在,请提供更多的代码和数据示例,以便更好地帮助你解决问题。 #### 引用[.reference_title] - *1* [【已解决pyecharts 对 pandas数据可视化表不显示问题](https://blog.csdn.net/Zinnir/article/details/130178942)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [pyecharts可视化](https://blog.csdn.net/itnerd/article/details/125627812)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值