如何一键将pyecharts-gallery-master中所有的例子HTML网页全部修改为离线下可现实图像正常出图的本地HTML网页

在上一篇中讲解了如何修改pyecharts-gallery-master中的py源程序并配置本地的js文件资源pyecharts-assets,启动服务器、从而解决在离线环境下PyEcharts不出图的问题,但是pyecharts-gallery-master中的例子那么多,逐一修改所有的py文件并重新生成太过麻烦了,能不能编译个程序一键生成呢?

答案是肯定的,而且,chenjianxin大神也已经为我们准备好了框架和绝大部分代码,我们只需要进行简单的修改即可实现上述的“一键修改”功能,诀窍就在大神为我们准备的run_All.py

其实,chenjianxin大神编写run_all.py的目的应该是为各种写好了的绘图示例生成对应的html文件,所以我们只需要完成在利用python编译绘图.py源程序前,添加如下所示的配置本地js地址的语句即可:

#LocalhostConfig
#离线使用的时候只需要在顶部声明 CurrentConfig.ONLINE_HOST 即可
from pyecharts.globals import CurrentConfig
CurrentConfig.ONLINE_HOST = "http://127.0.0.1:8000/assets/"

当然,除了上面的一点,chenjianxin大神的run_All.py中还需要进行一点儿修改,以增强容错性,主要就是要考虑利用python编译的时候的异常处理,因为在很多例子中,除了利用了js文件外,还用到了一些需要实时联网才能获得的数据,还有就是百度地图BMap中的那几个例子,也都需要上网才行,所以是无法进行正常编译的,如果不进行异常处理,会一出现这种需要联网的例子,就会中止运行了。。。

下面就给出具体的代码——

前面修改后的代码如下:

import hashlib
import json
import os
import subprocess
import operator
import random
import time
from typing import Dict, List, Optional
from jinja2 import Template


# 清理的命令
ClearCmd: str = (
    'find ./ -mindepth 2 -type f ! -name "*.py" ! -name "*.json" ! '
    '-path "./.idea/*" ! -path "./.mypy_cache/*" ! -path "./.git/*" '
    "| xargs rm -f"
)
# 命令解释:搜索当前目录下除根目录外的子文件夹中后缀不为 .py 和 .json 的文件,且忽略 .idea, .mypy_cache, .git 文件夹
# find ./ -mindepth 2 -type f ! -name "*.py" ! -name "*.json" !
# -path ".//.idea/*" ! -path ".//.mypy_cache/*" ! -path ".//.git/*"
# {上面的命令} | xargs rm -f
# {上面的命令} -exec rm -f {} \;
def clear_all():
    print("正在清理...")
    try:
        print(ClearCmd)
        os.system(ClearCmd)
        time.sleep(3)#等待清理的执行
        print("清理成功!")
    except Exception as err:
        raise err
		
strpath=r"C:\WorkDir\pyecharts-gallery-master"
os.chdir(strpath)
os.listdir()

# 需要跳过的文件名
SKIP_FILE: List = [
    ".git",
    ".mypy_cache",
    ".idea",
    "run_all.py",
    "README.md",
    "README_EN.md",
    "LICENSE",
    "index.html",
    "CNAME",
    "favicon.ico",
    "_sidebar.md",
    "_navbar.md",
    "_coverpage.md",
    ".nojekyll",
    ".DS_Store",
    "file_checker.json",
    ".ipynb_checkpoints",
    "run_All.ipynb",
]

主要是设置路径和增加了两个需要跳过的文件:    ".ipynb_checkpoints",    "run_All.ipynb",这个很容易理解,因为在用Jupyter Notebook运行时会额外生成这两个文件;

最核心的修改地方在函数write_chart_markdown_and_html中,具体的修改后代码如下所示:


def write_chart_markdown_and_html(chart_script: str, chart_script_name: str, folder: str):
    """
    保存各图的 markdown 和 html
    :param chart_script: 路径
    :param chart_script_name: 脚本名称
    :param folder: 文件夹名字
    """
    
    strhost="""#LocalhostConfig
# 配置CurrentConfig.ONLINE_HOST为本机地址资源
from pyecharts.globals import CurrentConfig
CurrentConfig.ONLINE_HOST = "http://127.0.0.1:8000/assets/"

"""
    chart_model = ChartMarkdownModel
    with open(f"{chart_script_name}.md", "w", encoding='utf-8') as md:
        with open(chart_script, "r",encoding='utf-8') as f:
            strtmp=f.read()
            chart_model = chart_model.replace("{code}", strtmp)  
        chart_model = chart_model.replace("{html}", f"{folder}/{chart_script_name}.html")
        md.write(chart_model)      
        with open(chart_script, "w",encoding='utf-8') as fpy:
            if not strtmp.startswith("#LocalhostConfig"):# 如果原代码前端还没有配置本地地址资源...   
                strtmp=strhost+strtmp# 在原代码前端添加本地地址资源          
            fpy.write(strtmp)           
        try:#在新的线程中运行py程序,从而生成对应的网页
            subprocess.check_call(["python", chart_script], stdout=subprocess.PIPE)
        except Exception as err:
            #print(err)
            print("------> run "+chart_script + " error <-------")

主要修改的地方就是:首先,我添加了用来表示本地js文件配置代码的strhost字符串;然后,在每次打开py源文件的时候利用#LocalhostConfig进行了一个判断,看是否已经添加过,如果已经添加过了就不再重复添加了(避免有的时候程序运行一半出错了重新运行时前面的源程序重复添加的情况出现);最后,在利用subprocess子线程中利用python对源程序文件进行编译时,添加了try。。。except的异常处理机制,当某个特定的需要联网的示例py程序编译出错的时候不至于中断,而是记录下这些例外的示例程序。。。

现在,运行run_All.py即可看到整个文件夹下所有的py程序先是被添加了本地js文件配置代码,然后再进行python编译,从而重新生成了html文件!

结合上一篇的讲述,我们新打开一个控制台程序,并运行了python -m http.server -d C:\Users\super\pyecharts-assets-master命令启动js文件服务后,就可以看到各种漂亮的示例html的效果了,开启我们神奇的PyEcharts数据可视化学习之旅吧!如下图所示:

 

Pyecharts Gallery Master是一个存储在GitHub上的资源库,用于展示Pyecharts的可视化绘图例子。在这个资源库,你可以找到各种各样的例子来帮助你学习和使用Pyecharts。这个资源库包含了大量的可视化绘图的例子,可以帮助你更好地理解和应用Pyecharts的功能。你可以点击链接https://github.com/pyecharts/pyecharts-gallery来访问这个资源库,并浏览其例子。在这个资源库,你可以找到许多例子,并将其下载到本地进行学习和使用。如果你想在离线环境下使用Pyecharts并解决Pyecharts出图的问题,你可以参考上一篇文章的方法,修改相应的py文件并配置本地的js文件资源pyecharts-assets。不过如果你觉得逐一修改所有的py文件并重新生成太过麻烦,你可以考虑编译一个程序,实现一键生成的功能。这样的话,你就可以更方便地使用Pyecharts并生成你需要的图表了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [解决离线状态下使用PyEcharts进行数据可视化绘图时,pyecharts-gallery示例库的所有html网页打不开、不出...](https://blog.csdn.net/u013600870/article/details/112056745)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [如何一键pyecharts-gallery-master所有的例子HTML网页全部修改离线下可现实图像正常出图的本地HTML...](https://blog.csdn.net/u013600870/article/details/112057046)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值