pyecharts源码解读(17)HTML组件包components之表格组件Table

2023-11-19

当前pyecharts的版本为1.9.0。

components包概述

components包位于pyecharts包顶级目录中,用于定义pyecharts的HTML组件。包结构如下:

├─components # HTML组件包
│  │  image.py # 定义图像组件类Image
│  │  table.py # 定义表格组件类Table
│  │  __init__.py # 重构命名空间,将组件类命名空间提升至components包命名空间

目前HTML组件类TableImage 与复合图表类Page不兼容。

Table

pyecharts/components/table.py模块只定义了表格组件类Table

Table类继承自基类ChartMixin,作用为绘制表格。功能依赖第三方库prettytablepyecharts依赖库)。

Table类的签名为class Table(page_title: str = CurrentConfig.PAGE_TITLE, js_host: str = "")

Table类的构造方法参数如下:

  • js_host:JavaScript库的URL。字符串,默认值为""
  • page_title:HTML页面标题。字符串,默认值为全局变量CurrentConfig.PAGE_TITLE

Table类的属性如下:

  • js_host:JavaScript库的URL。字符串,默认值为全局变量CurrentConfig.ONLINE_HOST。属性值为构造方法参数js_host与全局变量CurrentConfig.ONLINE_HOST进行或操作的结果。
  • page_title:HTML页面标题。字符串。值为构造方法参数page_title值。
  • js_functions:自定义JavaScript语句。类型为OrderedSet对象。默认值为OrderedSet()
  • js_dependencies:定义JavaScript依赖库。类型为OrderedSet对象。默认值为OrderedSet("echarts")
  • title_opts:表格标题配置。类型为ComponentTitleOpts对象,默认值为ComponentTitleOpts()。标题配置包括titlesubtitletitle_stylesubtitle_style等4个配置项。
  • html_content:表格的HTML。字符串,默认值为""
  • _component_type:组件类型。字符串,默认值为"table"
  • chart_id:组件id。字符串,默认值为uuid.uuid4().hex

Table类的方法如下:

  • add(self, headers: Sequence, rows: Sequence, attributes: Optional[dict] = None):添加图表数据。
    • headers:图表标题行。类型为序列。
    • rows:图表行数据。类型为序列。
    • attributes:图表样式属性。类型为字典。默认值为None or {"class": "fl-table"}
  • def set_global_opts(title_opts: Union[ComponentTitleOpts, dict, None] = None):将表格对象的title_opts属性值设置为title_opts参数值。
  • render:调用renderengine模块中的render函数渲染HTML文档。默认渲染模板为components.html
  • render_embed:调用renderengine模块中的render_embed函数输出HTML字符串。默认渲染模板为components.html
  • render_notebook:调用renderengine模块中的render_notebook函数将输出嵌入到notebook中。默认渲染模板为 nb_components.html

表格模板

macro部分源码:

{%- macro gen_components_content(chart) %}
    {% if chart._component_type == "table" %}
        <style>
            .fl-table {
                margin: 20px;
                border-radius: 5px;
                font-size: 12px;
                border: none;
                border-collapse: collapse;
                max-width: 100%;
                white-space: nowrap;
                word-break: keep-all;
            }

            .fl-table th {
                text-align: left;
                font-size: 20px;
            }

            .fl-table tr {
                display: table-row;
                vertical-align: inherit;
                border-color: inherit;
            }

            .fl-table tr:hover td {
                background: #00d1b2;
                color: #F8F8F8;
            }

            .fl-table td, .fl-table th {
                border-style: none;
                border-top: 1px solid #dbdbdb;
                border-left: 1px solid #dbdbdb;
                border-bottom: 3px solid #dbdbdb;
                border-right: 1px solid #dbdbdb;
                padding: .5em .55em;
                font-size: 15px;
            }

            .fl-table td {
                border-style: none;
                font-size: 15px;
                vertical-align: center;
                border-bottom: 1px solid #dbdbdb;
                border-left: 1px solid #dbdbdb;
                border-right: 1px solid #dbdbdb;
                height: 30px;
            }

            .fl-table tr:nth-child(even) {
                background: #F8F8F8;
            }
        </style>
        <div id="{{ chart.chart_id }}" class="chart-container" style="">
            <p class="title" {{ chart.title_opts.title_style }}> {{ chart.title_opts.title }}</p>
            <p class="subtitle" {{ chart.title_opts.subtitle_style }}> {{ chart.title_opts.subtitle }}</p>
            {{ chart.html_content }}
        </div>

components.html源码:

{% import 'macro' as macro %}
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>{{ chart.page_title }}</title>
</head>
<body>

{{ macro.gen_components_content(chart) }}

</body>
</html>

简易图表Table案例

from pyecharts.components import Table

table = Table()

headers = ["City name", "Area", "Population", "Annual Rainfall"]
rows = [
    ["Brisbane", 5905, 1857594, 1146.4],
    ["Adelaide", 1295, 1158259, 600.5],
    ["Darwin", 112, 120900, 1714.7],
    ["Hobart", 1357, 205556, 619.5],
    ["Sydney", 2058, 4336374, 1214.8],
    ["Melbourne", 1566, 3806092, 646.9],
    ["Perth", 5386, 1554769, 869.4],
]
attributes={"border":"1px"}

table.add(headers, rows)
table.set_global_opts({"title":"Table-基本示例", 
                       "subtitle":"我是副标题支持换行哦",
                       "title_style":"style='color:red'",
                       "subtitle_style":"style='color:green'"
                      })

table.render()

在这里插入图片描述

pyecharts/components/table.py模块源码

import uuid

from jinja2 import Environment
from prettytable import PrettyTable

from ..charts.mixins import ChartMixin
from ..commons.utils import OrderedSet
from ..globals import CurrentConfig
from ..options import ComponentTitleOpts
from ..render import engine
from ..types import Optional, Sequence, Union


class Table(ChartMixin):
    def __init__(self, page_title: str = CurrentConfig.PAGE_TITLE, js_host: str = ""):
        self.page_title = page_title
        self.js_host = js_host or CurrentConfig.ONLINE_HOST
        self.js_dependencies: OrderedSet = OrderedSet()
        self.js_functions: OrderedSet = OrderedSet()
        self.title_opts: ComponentTitleOpts = ComponentTitleOpts()
        self.html_content: str = ""
        self._component_type: str = "table"
        self.chart_id: str = uuid.uuid4().hex

    def add(self, headers: Sequence, rows: Sequence, attributes: Optional[dict] = None):
        attributes = attributes or {"class": "fl-table"}
        table = PrettyTable(headers, attributes=attributes)
        for r in rows:
            table.add_row(r)
        self.html_content = table.get_html_string()
        return self

    def set_global_opts(self, title_opts: Union[ComponentTitleOpts, dict, None] = None):
        self.title_opts = title_opts
        return self

    def render(
        self,
        path: str = "render.html",
        template_name: str = "components.html",
        env: Optional[Environment] = None,
        **kwargs,
    ) -> str:
        return engine.render(self, path, template_name, env, **kwargs)

    def render_embed(
        self,
        template_name: str = "components.html",
        env: Optional[Environment] = None,
        **kwargs,
    ) -> str:
        return engine.render_embed(self, template_name, env, **kwargs)

    def render_notebook(self):
        # only notebook env need to re-generate chart_id
        self.chart_id = uuid.uuid4().hex
        return engine.render_notebook(self, "nb_components.html", "nb_components.html")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pyecharts源码解读(17)HTML组件包components之表格组件Table 的相关文章

  • 谷歌浏览器自动填充所有密码输入

    我的问题 我必须打开谷歌来自动填充我网站上的登录信息 但是现在每当我想编辑我的帐户信息或编辑其他用户帐户信息 作为管理员 时 它都会尝试自动填充该登录数据 它在奇怪的地方填充了我的数据 问题似乎是 Chrome 会自动用某种密码填充任何输入
  • 将 DIV 扩展到父列表项之外

    我有一个有序列表 它实际上是页面上产品的显示 在每个列表项中 li 有一些内容 后面跟着一个div在关闭列表项之前包含更多内容 我需要每个列表项中的 div 扩展 其宽度 超出其父列表项 并实际填充有序列表的宽度 ol 每个 div 还需要
  • 页面加载时输入触发的 jQuery 更改事件

    为什么是下面这个JQuery当文档在浏览器中准备就绪时触发事件运行 我的经验很少JQuery所以我有点坚持这个
  • 在 HTML SELECT 标记中禁用键盘

    我想禁用 HTML SELECT 标记的键盘 以便用户只能使用鼠标来选择选项 我试过了event cancelBubble true on the onkeydown onkeyup and onkeypress没有运气的事件 有任何想法吗
  • 单击菜单外部以关闭菜单时,Bootstrap 导航栏“闪烁”

    我遇到了导航栏问题 当您单击菜单外部以关闭菜单时 导航栏会出现 闪烁 如果在单击菜单外时按住鼠标 则闪烁会持续存在 如下所示 我认为这可能与角度有关 而不是与CSS有关 主要是因为其他人未能在小提琴上复制它 上一个问题在这里 https s
  • 如何在网格视图的单元格中插入换行符?

    我想知道如何在网格视图的单元格中添加换行符 现在 我把 1 1 1 然而 这呈现为 1 1 1 如何修复换行符 以便每个数字显示在自己的行上 Add HtmlEncode False to asp BoundField并且在正文中 应该有
  • HTML5 拖放 - 没有透明度?

    当我将一个元素拖放到页面上时 该元素会变成 幻影 基本上它获得了一些透明度值 有什么办法可以做到吗opacity 1 看来是做不到了 拖动的元素被放入具有自己的不透明度 低于 1 的容器中 这意味着虽然您可以降低拖动元素的不透明度 但您无法
  • 当脚本是从加载的脚本动态创建的 DOM 节点时,脚本 onload 和 window.onload 的顺序是否定义良好?

    File loader js function main if typeof window undefined var script window document createElement script script src https
  • HTML if 语句在 CDN 失败时加载本地 JS/CSS

    当从 CDN 或任何外部服务器加载 CSS JS 文件时 有可能 即使概率很低 由于外部故障而丢失该文件 在这种情况下 html 页面将因缺乏适当的 CSS 和 JS 而被损坏 有没有一种实用的方法可以在 CDN 故障时加载本地版本 IF
  • 如何使盒子阴影显示在容器中的下一个元素上?

    请看这段代码 http codepen io Varin pen kkGgVd http codepen io Varin pen kkGgVd div class container div class outside2 div clas
  • 在 SPA 中加载外部脚本和样式文件

    我有一种 SPA 它使用 API 来获取数据 该 SPA 有一些实例 它们都使用通用样式和脚本文件 所以我的问题是 当我更改这些文件中的一行时 我将必须打开每个实例并更新文件 这对我来说真的很耗时 一种方法是将这些文件放在服务器中的文件夹中
  • 为什么 Chrome 给 body 元素添加边距? [复制]

    这个问题在这里已经有答案了 我有简单的 html 文档 是进入身体的一种元素 当我在 div 元素中设置 margin top 时 Chrome 会向 body 添加相同的边距 边距仅在开发者工具中可见 我的代码 div Test div
  • 如何使用正则表达式进行正确的输入验证?

    我想让用户只输入整数或浮点数 现在我只能输入整数 它允许输入点或逗号 无法找到正确的正则表达式来验证整数和浮点数
  • 使用 Java 编程式 HTML 文档生成

    有谁知道如何在 Java 中以编程方式生成 HTMLDocument 对象 而不需要在外部生成字符串 然后使用 HTMLEditorKit read 来解析它 我问的两个原因 首先 我的 HTML 生成例程需要非常快 并且我认为将字符串解析
  • 如何将水平 ul 列表中的项目与图像垂直对齐?

    我有以下 html 代码 div ul li a href index php site login About a li li a href index php site login FAQ a li li a href http twi
  • 页面其余部分完成加载后延迟加载 html5 视频

    我有一个视频元素用作我正在构建的页面底部部分的背景 我试图通过将 src 存储为 data src 属性并使用 jQuery 在其他资源加载后将其应用到 src 属性 因为它不是英雄图像或任何东西 我想加载海报以节省加载时间 然后稍后加载视
  • 如何像在浏览器中一样检索准确的 HTML

    我正在使用 Python 脚本来呈现网页并检索其 HTML 它适用于大多数页面 但对于其中一些页面 检索到的 HTML 不完整 我不太明白为什么 这是我用来废弃此页面的脚本 由于某种原因 每个产品的链接不在 HTML 中 Link http
  • 如何使表格单元格的最小宽度为 3 位数字?

    如何使表格中的每个单元格的最小宽度为 3 位数字且不会更大 现在我正在硬编码min width 但我不喜欢硬编码一个值 因为我将来可能想更改字体 如果需要Javascript也没关系 table border 1 tr td 1 td td
  • HTML 文本框,自动突出显示文本

    我将如何制作一个包含预先存在的文本的文本框 当用户在其中单击时 其中的所有文本都会突出显示 例如 YouTube 在其视频上使用嵌入代码的文本框的方式相同 谢谢 如果我正确理解你的问题 你可以使用一些javascript 未经测试的代码
  • 使用命令行将 MediaWiki 维基文本格式转换为 HTML

    我倾向于编写大量文档 因此 MediaWiki 格式对我来说很容易理解 而且比编写传统 HTML 节省了我很多时间 然而 我也写了一篇博客 发现一直从键盘切换到鼠标来输入正确的 HTML 标签会增加很多时间 我希望能够使用 Mediawik

随机推荐

  • SQL主键与外键的创建与解析

    一个表中 会存很多条记录 需要一个列来位置标识一条数据 1 主键 唯一标识一条数据 值不能为空 不能重复 标识列 一旦将一个列设置成标识列 它就不能再手动输入值 是插入数据时自动生成的 这个列的类型必须的不带小数的数值型 整型 标识列的标识
  • 利用搜索关键字爬取今日头条新闻评论信息案例

    利用搜索关键字爬取今日头条新闻评论信息案例 爬虫4步骤 1 分析网页 2 对网页发送请求 获取响应 3 提取解析数据 4 保存数据 本案例所用到的模块 import requests import time import csv 案例网址
  • centos 添加路由命令_centos路由添加route命令

    方法一 添加路由 route add net 192 168 0 0 24 gw 192 168 0 1 route add host 192 168 1 1 dev 192 168 0 1 删除路由 route del net 192 1
  • C++连接sqlserver

    项目结构 ConsoleApplication cpp include
  • KeyError: Spider not found (Scrapy)

    在初次使用Scrapy框架时 突然蹦出了一个bug 看了一下午还没解决 吃过晚饭后灵光一现嘿嘿 终于解决了 出现的具体bug如下 自己觉得是路径问题 就一步一步的cd到myspider 自己定义的文件名 文件下 再次运行 结果又出现了下面的
  • 用Java实现五子棋对弈

    目录 题目展示 题目分析 代码实现 结果展示 题目展示 1 使用二维数组存储五子棋棋盘 如下图 2 在控制台通过Scanner输入黑白棋坐标 表示二维数组坐标 使用实心五角星和空心五角星表示黑白棋子 如下图 输入后重新输出棋盘如下图 白棋输
  • MySQL表的操作

    MySQL表的操作 创建表 查看表结构的详细信息 修改表结构 增加表结构属性 删除表结构 表结构的修改 删除表结构 创建表 语法 create table table name field1 datatype comment xxxxx f
  • 多线程太可怕了

    今天发现了一个多线程引起的bug 然后进一步体会到 这东西太容易出问题了 首先要说明的是 出问题的代码可不是一般人写的 是由一个叫EPAM systems的世界知名外包公司的人写的 这些java程序员个个经验丰富 心高气傲 貌似base在乌
  • 久坐不运动易导致低血压

    近年来 越来越多的年轻人患上了体质性低血压 大多是由于久坐不运动和营养不 够 两大原因造成的 现在 不少年轻人缺乏体育锻炼 一天到晚屁股总粘着凳子 久而久之 血管的活动也随之减少 使得血管的反应能力慢慢变差 一个简单的蹲下 站立动作也会使得
  • SEM代码篇----R详细实现(SEM 2)

    SEM代码篇 R详细实现 1 step1 安装包 install packages lavaan install packages semPlot install packages semTools rm list ls 清除所有变量 li
  • Doris节点扩容及数据表

    扩容和缩容 上篇文章简单讲了doris的安装 本章分享的是doris中fe和be节点的扩容缩容以及doris的数据表 1 FE 扩容和缩容 使用 MySQL 登录客户端后 可以使用 sql 命令查看 FE 状态 目前就一台 FE mysql
  • git学习心得

    git是一款十分有用的版本控制软件 程序员必备 http www liaoxuefeng com wiki 0013739516305929606dd18361248578c67b8067c8c017b000 001374325691607
  • LeetCode第79题:单词搜索

    给定一个 m x n 二维字符网格 board 和一个字符串单词 word 如果 word 存在于网格中 返回 true 否则 返回 false 单词必须按照字母顺序 通过相邻的单元格内的字母构成 其中 相邻 单元格是那些水平相邻或垂直相邻
  • 中国人民大学计算机系孙辉,张静(中国人民大学信息学院计算机系讲师)_百度百科...

    张静 中国人民大学信息学院计算机系讲师 语音 编辑 锁定 讨论 上传视频 本词条缺少概述图 补充相关内容使词条更完整 还能快速升级 赶紧来编辑吧 张静 现任中国人民大学信息学院计算机系讲师 1 中文名 张静 毕业院校 比利时鲁汶大学学位 学
  • 最详细的Java知识点--Map集合

    Map 主要内容 Map集合 目标 能够说出Map集合特点 使用Map集合添加方法保存数据 使用 键找值 的方式遍历Map集合 使用 键值对 的方式遍历Map集合 能够使用HashMap存储自定义键值对的数据 能够使用HashMap编写斗地
  • java错误和异常

    错误 error 非常严重 不处理无法编译 不过很容易处理 一般也就是变量名错误 函数写错了这些 还有就是内存 环境问题了 异常 Exception 编译时异常 必须使用try catch才能运行 比如IOException SQLExce
  • Java--- Java 中的线程,一般执行完成后就会自动销毁

    关于 Java 中的线程 一般执行完成后就会自动销毁 程序会终止 如下测试代码 public class Test implements Runnable public static void main final String args
  • Unity 2D 碰撞检测位置,生成烟雾实例化

    ContactPoint2D contact p collision contacts 0 Quaternion rot Quaternion FromToRotation Vector3 up contact normal Vector3
  • ubuntu安装最新版docker简易教程

    Ubuntu Docker 安装 Docker Engine Community 支持以下的 Ubuntu 版本 Xenial 16 04 LTS Bionic 18 04 LTS Cosmic 18 10 Disco 19 04 其他更新
  • pyecharts源码解读(17)HTML组件包components之表格组件Table

    当前pyecharts的版本为1 9 0 components包概述 components包位于pyecharts包顶级目录中 用于定义pyecharts的HTML组件 包结构如下 components HTML组件包 image py 定