pyecharts源码解读(6)工具包commons概述:封装JavaScript代码、有序集合数据结构、移除字典中值为None的元素

出现dependencies.dependency.version‘ for xxxx:jar is missing的解决方法 这个错误通常发生在 Maven 项目中,表示在项目的依赖关系中找不到指定的版本信息 阅读详情

当前pyecharts版本为1.9.0

概述

commons包位于pyecharts包顶级目录中,用于定义pyecharts的工具类和工具函数。包结构如下:

├─commons # 工具包
│  │  utils.py # 定义工具类、工具函数
│  │  __init__.py # 空文件

commons包的主要功能定义在utils.py模块中。utils.py模块的主要元素如下:

  • JsCode( js_code: str)类:封装JavaScript代码,在JavaScript代码两端增加分隔符--x_x--0_0--。典型应用位于pyecharts/charts/base.py模块中的Base类和pyecharts/globals.py模块中的ToolTipFormatterType变量。
  • replace_placeholder(html: str) -> str函数:格式化JavaScript代码,将分隔符--x_x--0_0--替换为空字符串。典型应用位于pyecharts/charts/base.py模块中的Base类。
  • replace_placeholder_with_quotes(html: str)函数:格式化JavaScript代码,将分隔符--x_x--0_0--替换为引号。典型应用位于pyecharts/charts/base.py模块中的Base类。
  • remove_key_with_none_value(incoming_dict)函数:递归移除字典中值为None的元素。相关函数为_expand、_clean_array、_clean_dict。典型应用位于pyecharts/charts/base.py模块中的Base类。
  • _flat(obj)函数:将对象展平为元组或列表或集合。
  • OrderedSet(*args)类:构造"有序集合"数据结构,可返回一个不包含重复元素的按添加顺序排列的列表。典型应用位于pyecharts/charts/base.py模块中的Base类中的js_functions和js_dependencies属性。
  • produce_require_dict(js_dependencies, js_host) -> dict函数:构造js依赖库配置。典型应用位于pyecharts/render/engine.py模块中的render_notebook函数。

在这里插入图片描述

案例:封装、格式化JavaScript代码

from pyecharts.commons import utils

code='''"var a=10;"'''
#封装JavaScript代码
result=utils.JsCode(code)
print(repr(result.js_code))
#格式化JavaScript代码,去除占位符
print(repr(utils.replace_placeholder(result.js_code)))
#格式化JavaScript代码,去除占位符,用引号替代
print(repr(utils.replace_placeholder_with_quotes(result.js_code)))

输出为:

'--x_x--0_0--"var a=10;"--x_x--0_0--'
'var a=10;'
'"var a=10;"'

案例:递归移除字典中值为None的元素

from pyecharts.commons import utils

data= {"a":1,"b":None,"c":{"d":None},"e":[{"f":None}]}
result=utils.remove_key_with_none_value(data)
print(result)

输出为:

{'a': 1, 'c': {}, 'e': [{}]}

案例:构造“有序集合”

from pyecharts.commons import utils

# 构造“有序集合”,其实结构是列表
a= utils.OrderedSet(3,1)
# 输出“有序集合”以及辅助字典
print(a.items,a._values)
# “有序集合”添加重复元素
a.add(2,3)
print(a.items,a._values)

# 常规集合,元素无序
b=set([3,1,2])
print(b)

输出为:

[3, 1] {3: True, 1: True}
[3, 1, 2] {3: True, 1: True, 2: True}
{1, 2, 3}

案例:输出pyecharts依赖库配置

from pyecharts.commons import utils
from pyecharts.charts import Bar

bar=Bar()
data = utils.produce_require_dict(bar.js_dependencies,bar.js_host)
print(data)

输出为:

{'config_items': ["'echarts':'https://assets.pyecharts.org/assets/echarts.min'"], 'libraries': ["'echarts'"]}

utils.py模块源码

import re

from ..datasets import EXTRA, FILENAMES


class JsCode:
    def __init__(self, js_code: str):
        self.js_code = "--x_x--0_0--" + js_code + "--x_x--0_0--"

    def replace(self, pattern: str, repl: str):
        self.js_code = re.sub(pattern, repl, self.js_code)
        return self


class OrderedSet:
    def __init__(self, *args):
        self._values = dict()
        self.items = []
        for a in args:
            self.add(a)

    def add(self, *items):
        for item in items:
            if not self._values.get(item, False):
                self._values.update({item: True})
                self.items.append(item)


def produce_require_dict(js_dependencies, js_host) -> dict:
    confs, libraries = [], []
    for name in js_dependencies.items:
        if name.startswith("https://api.map.baidu.com"):
            confs.append("'baidu_map_api{}':'{}'".format(len(name), name))
            libraries.append("'baidu_map_api{}'".format(len(name)))
        if name in FILENAMES:
            f, _ = FILENAMES[name]
            confs.append("'{}':'{}{}'".format(name, js_host, f))
            libraries.append("'{}'".format(name))
        else:
            for url, files in EXTRA.items():
                if name in files:
                    f, _ = files[name]
                    confs.append("'{}':'{}{}'".format(name, url, f))
                    libraries.append("'{}'".format(name))
                    break
    return dict(config_items=confs, libraries=libraries)


def replace_placeholder(html: str) -> str:
    return re.sub('"?--x_x--0_0--"?', "", html)


def replace_placeholder_with_quotes(html: str) -> str:
    return re.sub("--x_x--0_0--", "", html)


def _flat(obj):
    if hasattr(obj, "js_dependencies"):
        return list(obj.js_dependencies)

    if isinstance(obj, (list, tuple, set)):
        return obj

    return (obj,)  # tuple


def _expand(dict_generator):
    return dict(list(dict_generator))


def _clean_dict(mydict):
    for key, value in mydict.items():
        if value is not None:
            if isinstance(value, dict):
                value = _expand(_clean_dict(value))

            elif isinstance(value, (list, tuple, set)):
                value = list(_clean_array(value))

            elif isinstance(value, str) and not value:
                # delete key with empty string
                continue

            yield key, value


def _clean_array(myarray):
    for value in myarray:
        if isinstance(value, dict):
            yield _expand(_clean_dict(value))

        elif isinstance(value, (list, tuple, set)):
            yield list(_clean_array(value))

        else:
            yield value


def remove_key_with_none_value(incoming_dict):
    if isinstance(incoming_dict, dict):
        return _expand(_clean_dict(incoming_dict))
    elif incoming_dict:
        return incoming_dict
    else:
        return None
Python库 | python_commons-0.5-py2.6.egg 资源分类:Python库 所属语言:Python 资源全名:python_commons-0.5-py2.6.egg 资源来源:官方 安装方法:https://lanzao.blog.youkuaiyun.com/article/details/101784059 立即下载

相关推荐

(1)大蚂蚁即时通讯

即时通讯软件BigAnt(大蚂蚁)是杭州艾朴软件推出的一个”企业级”的即时通讯平台。该平台专为企业,其他企事业单位和政府单位而设计,目的就是为了增强内部沟通能力,提高内部员工的工作效率;同时服务器就直接置于单位内部,所有信息由单位自己管理,让单位以更安全、更可伸缩和更易于管理的方式灵活方便地使用协同和通信服务的功能! BigAnt(大蚂蚁)即时通讯软件包括服务器端和客户端。客户端功能包括单位

少安的砖厂 2236

分享88个JavaScript源码,总有一款适合您

js

zy0412326的专栏 5375

RISC-V详细介绍

文章目录写在前面什么是RISC-VRISC-V诞生的背景ISA霸权摩尔定律的穷途末路穷困潦倒的学者不断增长的指令数量RISC-V架构设计思想如何设计一个好的ISARISC-V之RV32I四个典型特点RISC-V之乘除法指令指令格式用乘法代替常数除法RISC-V之RV64RISC-V的特权架构机器模式监管者模式 写在前面 本文主要基于RISC-V中文手册,其中包括但不限于一些网络的资料。本文版权属于skywf,转载或借用请联系作者。 什么是RISC-V RISC-V(发音为“risk-five”)是一个基于

skywf的博客 3万+

pyecharts 报错AttributeError: ‘str‘ object has no attribute ‘js_dependencies‘

AttributeError: ‘str’ object has no attribute ‘js_dependencies’ 解决 可能是你 画一个图的时候render没去掉 画大屏图的时候不需要这个。

Codernmx 6489

5G移动网络运维(优化)

5G 网络优化现状 移动通信行业属于技术密集型行业,是国民经济的重要支柱以及整个社会经济运转体系中不可或缺的基础。2019 年年底 5G 开始商用,截止到 2020 年3月,我国三大运营商建设了 16.1 万个 5G 基站,我国成为目前全球 5G 基站最多的国家。预计到 2020 年年底,我国运营商会建设大概 70 万个 5G 基站。基于 5G高频段的特性,信号覆盖距离会低于ins 基站,再加上 5G 万物互联的巨大经济潜力价值需求,后续三大运营商在 5G 基站建设数量上势必会超过当前 LTE 基站数量的

2301_78171382的博客 1327

Unity UI适配实战:从Canvas Scaler到主流游戏适配方案解析

本文深入解析Unity UI适配的核心技术,重点介绍Canvas Scaler组件的关键参数如Reference Resolution和Screen Match Mode,并提供主流游戏适配方案实战分析。通过九宫格拉伸、动态调整等技巧,帮助开发者解决多设备适配难题,提升游戏UI在不同分辨率下的表现。

weixin_29001419的博客 973

Pyecharts学习记录day_01_各类图的作用和Pyecharts常用模块介绍

1 Pyecharts库简介2 Pyecharts常用模块介绍2.1 pyecharts.faker(伪造数据生成器)2.2 pyecharts.charts(各类图表模块)2.3 pyecharts.globals(设置图表的主样式等)2.4 pyecharts.options(设置绘图大小,样式等等)2.5 pyecharts.commons(设置背景色、渲染等)3 小结 # 只需 shift+回车 运行本单元格,就可以让jupyter notebook宽屏显示 from IPython.core.d.

FOR.GET 1410

电商项目功能简述

1.电商行业的技术特点 1.技术性 2.技术范围广 3.分布式 4.高并发,集群,负载均衡,高可用 5.海量数据 6.业务复杂 7.系统安全 2.电商行业的模式 B2B:企业到企业,商家到商家.代表:阿里巴巴 B2C:商家到客户.代表:京东.淘宝商城 C2C:客户到客户.淘宝集市 O2O:线上到线下 3.B2C电商系统架构功能模块 4.B2C电商系统架构功能描述 后台管理系统:管理商品、订单、类...

weixin_45116848的博客 9744

pyecharts源码解读(15)图表类包charts之组合图表: 选项卡Tab

当前pyecharts的版本为1.9.0。 概述 pyecharts/charts/composite_charts/包中的四个模块分别定义了组合图表类,其中pyecharts/charts/composite_charts/tab.py模块只定义了选项卡类Tab。 Tab类继承自图表基类CompositeMixin,作用为利用选项卡(tab)控制多个图表的展示。输出的HTML结构如下: 创建一个选项div,每个图表对应一个按钮, 用于切换显示图表。 创建一个图表div,每个图表构造一个单独的div,作为图

mighty13的专栏 3万+

数电实训:万年历

万年历

Lmyccq的博客 1万+

数学建模Matlab算法,第七章 对策论

对策论作为研究竞争与决策的数学理论,从零和对策到非常数和对策,为分析各类博弈问题提供了系统框架。其核心要素包括局中人、策略集和赢得函数,通过稳定解、Nash平衡点等概念揭示竞争规律。该理论广泛应用于经济、军事、政治等领域,不仅提供具体分析工具,更改变了决策思维方式,强调在互动中实现理性选择。对策论既揭示了竞争本质,也凸显合作价值,为解决社会矛盾、促进共赢发展提供了重要启示,在全球化背景下将发挥更大作用。

unber的博客 109

AttributeError: ‘NoneType‘ object has no attribute ‘js_dependencies‘

出现这样的时候,大概率是封装函数没有返回值。 给封装的函数加一个返回值,即可解决。(可以参考一下)

weixin_44902604的博客 1832

AI测试:手把手教你用AI创建流程图「喂饭教程」

本文介绍了如何利用next-ai-draw-io开源项目,通过AI快速生成专业流程图,提升测试工作效率。该工具支持自然语言交互,兼容多种AI模型(如OpenAI、Claude等),并集成draw.io图表引擎,实现实时编辑。

blues_C的博客 759

【Python】pyecharts 模块 ① ( ECharts 简介 | pyecharts 简介 | pyecharts 中文网站 | pyecharts 画廊网站 | pyecharts 画 )

一、pyecharts 模块 1、ECharts 简介 2、pyecharts 简介 3、pyecharts 中文网站 4、pyecharts 画廊网站 5、pyecharts 画廊用法

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

pyecharts源码解读(11)图表类包charts之包结构及base模块:图表类继承关系、图表基类Base

当前pyecharts的版本为1.9.0。 charts包结构 charts包位于pyecharts包顶级目录中,用于定义图表类。charts包的结构如下: │ ├─charts # 图表类包 │ │ base.py # 定义了图表基类Base │ │ chart.py # 基于base类定义了基本图表基类Chart、直角坐标系图表RectChart、3D图表基类Chart3D、 │ │ mixins.py # 定义多重继承基类ChartMixin、CompositeMixin │ │ __

mighty13的专栏 3万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

echarts制作柱形图

快速实现ECharts柱形图的制作。

weixin_61569821的博客 982

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Node.js 依赖管理(一)—区分dependencies和devDependencies

原文链接:https://www.novenblog.xin/detail/?id=65 本文拜读百度@小蘑菇哥哥的Node.js 中的依赖管理,正文从这里开始~ nodejs 中总共有 5 种依赖: 1、dependencies 2、devDependencies (常用) 3、peerDependencies (不太常用) 4、bundledDependencies (我...

weixin_30337157的博客 587

echarts python项目_pyecharts 开发笔记

本文记录了在 pyecharts 开发过程中的一些想法思路和具体问题分析解决的方案。写作本文的目的主要有两个:一是工作总结,每完成一项工作需要静下心来总结工作得失,这就是一种进步和成长;二是技术分享,对于同一个知识和技术,每个人的理解和思考都是不同的,博客提供了一个很好的分享平台。总体思想最初的想法大约七八月份的时候就尝试了写了 django-echarts 这个项目,发现一些细节性问题处理起来不...

weixin_39812142的博客 619

Django 错误信息:AttributeError: 'str' object has no attribute '_meta'

这个错误的原因是不恰当地使用了字符串形式的表名作为外键关联:user = models.ForeignKey('User')改成这样就可以了:user = models.ForeignKey(User)

weixin_33704591的博客 1629

Python--模块和包

python模块和包

weixin_51464994的博客 165

pyecharts源码解读(9)渲染包render之engine模块:渲染引擎

当前pyecharts版本为1.9.0 概述 render包结构 render包位于pyecharts包顶级目录中,用于渲染图表。render包结构如下: ├─render # 渲染设置包 │ │ display.py # 定义HTML、JavaScript显示类,用于支持在notebook中嵌入输出结果 │ │ engine.py # 定义渲染相关类、函数 │ │ snapshot.py # 定义渲染图片函数 │ │ __init__.py # 暴露渲染图片函数 │ │ │ ├─tem

mighty13的专栏 3万+

Python 模块

例如,我们有一个文件utils.py我们在另一个文件run.py中可以引入这个utils.py文件中的方法。

vincent_duan的专栏 1144

【Python】Python的Common工具包-功能大全

【代码】【Python】Python的Common工具包-功能大全

tttzzzqqq2018的博客 1696

缠论Python量化分析:如何用代码实现专业级技术分析

缠论作为中国本土发展起来的技术分析理论,因其系统性和可量化特性,正成为量化交易领域的重要工具。今天,我将为你介绍一个专业级的缠论Python实现框架——chan.py,它能够帮助交易者和开发者快速构建高性能的技术分析与交易决策系统。 想象一下,你正在分析一只股票的走势,需要手动绘制笔、线段、中枢,判断买卖点……这个过程既耗时又容易出错。而有了chan.py,这一切都可以通过代码自动完成,让你专注

gitblog_01009的博客 496

利用pyecharts做数据演示

环境: Python 2.7  + pyecharts 0.3.1 + Flask 0.12.2pyecharts 是一个用于生成 Echarts 图表的类库。实际上就是 Echarts 和 Python 的对接。 Echarts 是百度开源的一个数据可视化 JS 库。主要用于数据可视化。安装:pip install pyecharts 先帖两个效果:实现代码:# coding=UTF-8 # ...

预则立 6962
上一篇: pyecharts源码解读(5)数据集包datasets概述:支持模糊查找键的数据结构FuzzyDict
下一篇: pyecharts源码解读(7)渲染包render之display模块:构造HTML、Javascript代码
mighty13
博客等级 码龄23年 728粉丝 438原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值