pyecharts源码解读(18)HTML组件包components之图像组件Image

利用Flask动态展示Pyechats图表 之前,在网上搜到过很多教程,但是我按照教程做,一次也没成功。踩了很多坑,最后才做成。 没成功的主要原因: pyecharts版本不同,有些函数我的pyecharts库里没有,如dump_options_with_quotes() Markup() 方法不成功,主要是因为render_embed()函数只返回部分html代码,没有头和尾,必须还要引用echarts.js, 或者绘制地图时,相对应需要的js。中国地图需要china.js, 世界地图需要world.js 异步调用不成功,我也不太明白,反正就是f 阅读详情

当前pyecharts的版本为1.9.0。

components包概述

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

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

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

Image类

pyecharts/components/image.py模块只定义了图像组件类Image。

Image类继承自基类ChartMixin,作用为绘制图像。

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

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

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

Image类的属性如下:

  • 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()。标题配置包括title、subtitle、title_style、subtitle_style等4个配置项。
  • html_content:<img>标签中插入的HTML。字符串,默认值为""。注意!模板中的渲染方式<img {{ chart.html_content }}/>。
  • _component_type:组件类型。字符串,默认值为"image"。
  • chart_id:组件id。字符串,默认值为uuid.uuid4().hex。

Image类的方法如下:

  • add(self, src: str, style_opts: Optional[dict] = None):添加图像信息。
    • src:图像的源地址。类型为字符串。
    • style_opts:图像样式,即<img> 标签 CSS 样式。类型为字典。默认值为None。
  • set_global_opts(title_opts: Union[ComponentTitleOpts, dict, None] = None):将title_opts参数值设置为图像对象的title_opts属性值。
  • render:调用render包engine模块中的render函数渲染HTML文档。默认渲染模板为components.html。
  • render_embed:调用render包engine模块中的render_embed函数输出HTML字符串。默认渲染模板为components.html。
  • render_notebook:调用render包engine模块中的render_notebook函数将输出嵌入到notebook中。默认渲染模板为 nb_components.html。

图像组件模板

macro部分源码:

{% elif chart._component_type == "image" %}
    <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>
         <img {{ chart.html_content }}/>
    </div>
{% endif %}

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>

简易图像组件Image案例

from pyecharts.components import Image

image = Image()

img_src = (
    "https://user-images.githubusercontent.com/19553554/"
    "71825144-2d568180-30d6-11ea-8ee0-63c849cfd934.png"
)

image.add(
    src = img_src,
    style_opts = {"width": "200px", "height": "200px", "style": "margin-top: 20px"},
)

image.set_global_opts({"title":"标题", 
                       "subtitle":"副标题",
                       "title_style":"style='color:red'",
                       "subtitle_style":"style='color:green'"
                      })

image.render()

在这里插入图片描述

pyecharts/components/image.py模块源码

import uuid

from jinja2 import Environment

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, Union


class Image(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.title_opts: ComponentTitleOpts = ComponentTitleOpts()
        self.html_content: str = ""
        self._component_type: str = "image"
        self.chart_id: str = uuid.uuid4().hex

    def add(self, src: str, style_opts: Optional[dict] = None):
        html_tag_args = ""
        html_tag_args += 'src="{}" '.format(src)
        if style_opts:
            for k, v in style_opts.items():
                html_tag_args += '{}="{}" '.format(k, v)
        self.html_content = html_tag_args
        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")

关于Win11安装Ubuntu子系统报错:WslRegisterDistribution failed with error 解决办法 Win11安装Ubuntu子系统报错:WslRegisterDistribution failed with error 阅读详情

相关推荐

一文读懂AI大模型时代的RAG技术

RAG(Retrieval-Augmented Generation,检索增强生成) 是一种结合检索技术与生成模型的技术架构,旨在通过动态引入外部知识库增强大语言模型(LLM)的生成能力。其核心思想是通过检索系统从外部数据源(如企业知识库、实时文档等)获取相关信息,并将检索结果作为上下文输入生成模型,以提高生成答案的准确性、时效性和专业性

awei0916的专栏 2119

【python 可视化】pyecharts + Flask 使用指南

本指南会以一个小的 Flask 项目为例,说明如何在 Flask 中使用 pyecharts。请确保你已经安装 Flask,还没安装请执行 pip install flask 或其他方式安装。Step 0: 首先新建一个 Flask 项目Linux/macos 系统$ mkdir flask-echarts $ cd flask-echarts $ mkdir templatesWindows 系统

赖德发的博客 2万+

【机器人】机械臂控制入门技术栈分享

机械臂控制入门技术栈分享1.前言2.机器人控制入门技术栈2.1.空间描述和变化2.2.运动学分析2.3.动力学建模2.4.控制入门学习3.进阶部分3.1.机器人参数辨识3.2.非线性控制3.3.现代机器人描述方法:指数坐标4.总结 1.前言 今天看到优快云上有个分享个人技术栈的活动,虽然我不是一个正规的程序员,也不搞前端、后端这些,但我一直在优快云上通过写博客对我的学习进行总结,于是我突发奇想,不如我也写一下我的个人技术栈,针对机械臂控制入门的,因为我水平也不高,所以本文内容也许不够饱满,也不够准确,但

要恰饭得嘛 5858

Pyecharts库及其与Django的结合使用

在上一周发表的echarts和Django的结合使用中,有粉丝提出想要学习下pyecharts,我特地花了点时间研究了下,写出此篇文章,希望喜欢的能够给我点点赞~ 这篇文章不会提到太多的语法,也不会把每个图形都讲一遍,还是那句话,作为初学者,我们先要模仿着写。官方文档对图形使用的解析已经很清楚了,我只抓取我感觉比较重要的讲一些。 代码仓库地址还是原来的那个地址,示例资源和静态资源文件都已经集成到这个项目里了。 https://gitcode.net/sabian2/myechartdemo 简介 Echar

Amoor的博客 4963

SAP License:SAP会计凭证抬头的字段状态控制

FI模块的同事一般都知道在FI中有个字段状态变式,可以控制在凭证输入时哪些字段是必输、哪些可选哪些隐藏,但这只对凭证行项目中有效,你是否想过对于凭证抬头的字段是哪控制呢? 在中国,会计附件上都要带一个附件张数字段,但SAP的默认配置中没有这一字段,并非SAP没有设置此字段,而是我们没有配置这一字段。如果需要在凭证输入时放出分支号(BRNCH)、附件页数(NUMPG)等字段,在个人参数文件中加入参数CSF,参数值AR,即可。如下图: 实际上,这是对凭证国家的一个设置,在SAP中,配置了AR这个国家..

SAP权限管控|SAP用户权限管理|SAP权限合规检查|SAP全日志管理 2225

视觉惯性SLAM系列——ORB-SLAM3的整体介绍及各个线程的功能(五)

跟踪线程(Tracking Thread)作用:负责处理每一帧图像,进行相机位姿的估计和定位。它首先执行与前一帧图像的特征匹配,然后通过仅运动(motion-only)BA(Bundle Adjustment)优化位姿。如果跟踪失败,它会尝试在所有地图中进行重定位。此外,跟踪线程还负责决定何时插入新的关键帧,以及何时将关键帧从局部地图中移除。详细介绍见局部建图线程(Local Mapping Thread)作用:管理局部地图,向活跃地图添加关键帧和点,移除多余的关键帧和点。

曾经也曾立志 1004

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万+

FPGA原型验证(八):SoC设计适配与实现策略

时钟门控在SoC设计中很常见,应该小心处理门控时钟,以成功地在FPGA上原型化SoC设计。现代FPGA综合工具在正确约束的情况下,可以自动处理大多数门控时钟。通过遵循本章中的指导方针,即使具有复杂时钟门控的SoC设计也可以得到处理,并成功地在FPGA上进行原型化。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 477

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万+

FPGA实现DDR接口

verilog// DDR2控制器状态机// 初始化序列// 发出初始化命令endendendend// 自动预充电end// 其他状态...endcaseendend。

whm128的博客 1000

GEE 案例分析:利用Landsat数据进行FAI、NDVI及CHLA分析并统计平均值(巢湖为例)

浮游藻类指数(FAI)、归一化植被指数(NDVI)及叶绿素a(CHLA)是水体环境监测的重要指标。本文利用Google Earth Engine(GEE)平台,基于Landsat 5和Landsat 8数据,进行水体藻类及植被监测。

此星光明博客 1336

django项目中pyecharts详细使用教程1

1. 柱状图的制作 from django.shortcuts import render from pyecharts.charts import Bar from django.conf import settings def zhu_zhuang(request): bar = Bar() bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]) bar.add_yaxis("商家A", [5, 20, 36, 10,

weixin_42289273的博客 1万+

STM32实战开发(65):STM32摄像头图像采集开发教程

我们将会详细介绍如何使用STM32进行摄像头控制、图像数据采集以及如何将采集到的图像数据传输到其他设备进行处理。通过这篇博客,您将能够掌握STM32与摄像头模块的图像采集技术,应用于各种图像处理场景。为了确保STM32能够正确接收图像数据,我们需要配置STM32的GPIO引脚,并通过外部中断捕获这些信号。为了实现更高效的图像采集,可以通过DMA进行数据传输,将图像数据直接从GPIO引脚存储到内存中。通过DMA传输,我们可以将采集到的图像数据直接存储在内存中的一个缓冲区,然后进行后续的图像处理。

2201_76125393的博客 2539

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

当前pyecharts的版本为1.9.0。 components包概述 components包位于pyecharts包顶级目录中,用于定义pyecharts的HTML组件。包结构如下: ├─components # HTML组件包 │ │ image.py # 定义图像组件类Image │ │ table.py # 定义表格组件类Table │ │ __init__.py # 重构命名空间,将组件类命名空间提升至components包命名空间 Table类 pyecharts/componen

mighty13的专栏 3万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

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

python pyecharts render_【python 可视化】pyecharts + Flask 使用指南

本指南会以一个小的 Flask 项目为例,说明如何在 Flask 中使用 pyecharts。请确保你已经安装 Flask,还没安装请执行 pip install flask 或其他方式安装。Step 0: 首先新建一个 Flask 项目Linux/macos 系统$mkdir flask-echarts$cd flask-echarts$mkdir templatesWindows 系统新建一个...

weixin_39902472的博客 3187

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

pyecharts源码解读(10)渲染包render之templates目录:渲染模板

`templates`目录路径为`pyecharts/render/templates`,作用为存放渲染模板。 `pyecharts`使用`jinja2`库的模板引擎生成HTML。 `templates`目录中的文件主要有两类: - `macro`:模板宏定义。宏类似常规编程语言中的函数。它们用于把常用行为作为可重用的函数,取代手动重复的工作。宏还可以传递参数,因此可以实现`pyecharts`对象的渲染。 - `模板文件`:模板文件分为两大类,`nb`开头的html文件是针对notebook的模板,其余

mighty13的专栏 3万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

flask的动态网页_关于pyecharts可视化与Flask相结合

关于pyecharts和flask结合的案例不多,查阅了数十篇文章,尝试了若干遍,感觉还是不理想,最大的问题在于对echarts的理解上,对我而言,又需要向上推到ajax,jquery,bootstrap,html,css,javascript等等,有点超出了我的技能范围,所以最大程度的做到能用就够了,复用和进一步优化看起来还是遥遥无期。关于pyecharts可视化与中国经济、人口等数据...

weixin_32797081的博客 1801

Pyecharts使用JScode回调函数时遇到的函数内换行符失效问题

前记:这个准确来说不是问题,是bug……我愿意把它评为我今年遇到的最折磨人的bug;这个bug很少有人能踩坑,原因主要是bug触发的条件比较苛刻(看题目一长串就知道了): 需要在pyecharts中使用JScode(一般来说,当label、tooltips里面想要显示一些特殊的内容时,而formatter的字符串模板形式并不支持时,只能用jscode来实现) JScode中返回的字符串有换行需求,即插入换行符“\n” 使用pyecharts时习惯先创建一个pyecharts对象,然后再通过对象调用渲染

link_in_csdn的博客 3677

pyecharts离线使用,断网状态下pyecharts无法显示图

解决方法 1. 将下载好的pyecharts-assets文件解压到pyecharts库 2. 找到本地pyecharts库下面的globals.py文件 3. 修改为其中一行:DEFAULT_HOST="./pyecharts-assets/assets/" 可以解决pyecharts打包后可执行文件无法在断网的情况下显示图,需要注意的是,pyecahrts库无法自动被pyinstaller识别,需要手动把pyecahrts库文件放到可执行文件所在的文件夹下。 参考资料:...

k54kdk的博客 3959

python二手车数据采集分析可视化系统 (源码+文档)

python二手车数据采集分析可视化系统 (源码+文档)

公众号:源码之屋,十多年程序猿资深互联网人,目前专注于Python/Java/大数据项目解决方案制定,提供各行业各编程语言的全套开发服务,喜爱code,喜爱分享,生命不止,编码不息! 2123

第三方可视化数据分析图表Pyecharts(下载保存图片(生成的html图片)、zip函数(将数据转换为列表加元组的格式)、南丁格尔玫瑰图、双y轴可视化、饼形图和环形图)

第三方可视化数据分析图表Pyecharts

Triumph19的博客 2846

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

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

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

Pyecharts 静态图片输出&ppt中动态图表

pyecharts 简介 pyecharts 是一个用于生成 Echarts 图表的类库。Echarts 是百度开源的一个数据可视化 JS 库。用 Echarts 生成的图可视化效果非常棒,pyecharts可以与 Python 进行对接,可以在 Python 中直接使用数据生成图表。 至于怎么使用pyecharts 我这边就不多说了,官方的api:https://pyecharts.org/#/zh-cn/intro上面的图表使用都有demo,可以看着改。 我主要说两点: pyecharts 的动态图表

WIFI下的365 1万+

解决用pyecharts画图时输出保存的html文件或在notebook中输出的图像空白的问题,亲测有效!!!

最近在用pycharts画散点关系图,结果教程中的代码都没跑出来,输出保存的html文件或在notebook中输出的图像一直是空白的,也在csdn上找了所有能找到的解决方法,什么把官方文档里的les-miserables.json文件放到代码所在的目录中,或者启动python server,在本地调用输出。把html文件用记事本打开后,在开头加入如下代码,因为pyecharts 需要依赖一些 JavaScript 库和 CSS 样式,如果这些依赖缺失或未正确引入,就会导致绘制的图表无法正常显示。

m0_60939399的博客 4111

解决pyecharts运行后产生的html文件用浏览器打开空白或者jupyter无法显示

根据网站资源引用说明:pyecharts 使用的所有静态资源文件存放于 pyecharts-assets 项目中,默认挂载在https://assets.pyecharts.org/assets/ 因为默认优先从远程引用资源,这就导致有的时候无法加载js文件,图表显示不出来 解决办法: 下载所需js文件到本地,修改资源引用地址 看网站的介绍,pyecharts 提供了更改全局 HOST ...

Circle-C的博客 1万+
上一篇: pyecharts源码解读(17)HTML组件包components之表格组件Table
下一篇: 案例:利用pandas按区间统计各分数段成绩人数并可视化
mighty13
博客等级 码龄23年 728粉丝 438原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值