Echarts数据可视化图表设计 学习笔记 python

news/2024/11/15 6:57:05/

📣 概况
Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。

✨ 特性
简洁的 API 设计,使用如丝滑般流畅,支持链式调用
囊括了 30+ 种常见图表,应有尽有
支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab
可轻松集成至 Flask,Django 等主流 Web 框架
高度灵活的配置项,可轻松搭配出精美的图表
详细的文档和示例,帮助开发者更快的上手项目
多达 400+ 地图文件以及原生的百度地图,为地理数据可视化提供强有力的支持

快速开始

如何查看使用的 pyecharts 版本?

pip(3) install pyechartsimport pyecharts
print(pyecharts.__version__)

首先开始来绘制你的第一个图表

from pyecharts.charts import Barbar = Bar()
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
# render 会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件
# 也可以传入路径参数,如 bar.render("mycharts.html")
bar.render()

pyecharts 所有方法均支持链式调用。

from pyecharts.charts import Barbar = (Bar().add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]).add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
)
bar.render()

使用 options 配置项,在 pyecharts 中,一切皆 Options。

from pyecharts.charts import Bar
from pyecharts import options as opts# V1 版本开始支持链式调用
# 你所看到的格式其实是 `black` 格式化以后的效果
# 可以执行 `pip install black` 下载使用
bar = (Bar().add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]).add_yaxis("商家A", [5, 20, 36, 10, 75, 90]).set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))# 或者直接使用字典参数# .set_global_opts(title_opts={"text": "主标题", "subtext": "副标题"})
)
bar.render()# 不习惯链式调用的开发者依旧可以单独调用方法
bar = Bar()
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
bar.set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))
bar.render()

渲染成图片文件,这部分内容请参考 进阶话题-渲染图片

from pyecharts.charts import Bar
from pyecharts.render import make_snapshot# 使用 snapshot-selenium 渲染图片
from snapshot_selenium import snapshotbar = (Bar().add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]).add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
)
make_snapshot(snapshot, bar.render(), "bar.png")

使用主题
pyecharts 提供了 10+ 种内置主题,开发者也可以定制自己喜欢的主题,进阶话题-定制主题 有相关介绍。

from pyecharts.charts import Bar
from pyecharts import options as opts
# 内置主题类型可查看 pyecharts.globals.ThemeType
from pyecharts.globals import ThemeTypebar = (# ['LIGHT', 'DARK', 'CHALK', 'ESSOS', 'INFOGRAPHIC', 'MACARONS', 'PURPLE_PASSION', 'ROMA', 'ROMANTIC', 'SHINE', 'VINTAGE', 'WALDEN', 'WESTEROS', 'WONDERLAND']Bar(init_opts=opts.InitOpts(theme=ThemeType.MACARONS)).add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]).add_yaxis("商家A", [5, 20, 36, 10, 75, 90]).add_yaxis("商家B", [15, 6, 45, 20, 35, 66]).set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))
)
bar.render()以下是每个主题的特点:LIGHT:明亮,适合较为清新、轻快的视频内容。
DARK:暗黑,适合营造神秘、诡异或高科技感的视频效果。
CHALK:粉笔,适合营造手绘、有趣的视觉效果。
ESSOS:艾索斯,适合营造古老、奇幻的视觉效果。
INFOGRAPHIC:信息图表,适合添加数据可视化、信息图表等效果。
MACARONS:马卡龙,适合营造柔和、甜美的视觉效果。
PURPLE_PASSION:紫色激情,适合营造浓烈、高调的视觉效果。
ROMA:罗马,适合营造古典、庄重的视觉效果。
ROMANTIC:浪漫,适合营造浪漫、温馨的视觉效果。
SHINE:闪耀,适合添加闪闪发光、眩目的视觉效果。
VINTAGE:复古,适合营造怀旧、复古的视觉效果。
WALDEN:沃尔登,适合营造自然、深邃的视觉效果。
WESTEROS:维斯特洛,适合营造史诗般的战争场面。
WONDERLAND:仙境,适合营造奇幻、童话世界的视觉效果。

Note: 在使用 Pandas&Numpy 时,请确保将数值类型转换为 python 原生的 int/float。比如整数类型请确保为 int,而不是 numpy.int32

使用 Notebook
当然你也可以采用更加酷炫的方式,使用 Notebook 来展示图表,matplotlib 有的,pyecharts 也会有的。pyecharts 支持 Jupyter Notebook / Jupyter Lab / Nteract / Zeppelin 四种环境的渲染。具体内容请参考 进阶话题/Notebook

全局配置项


初识全局配置组件

Note: 配置项章节应该配合图表类型章节中的 example 阅读。

Document

全局配置项可通过 set_global_opts 方法设置
 

AnimationOpts:Echarts 画图动画配置项

class pyecharts.options.Animation

class AnimationOpts(# 是否开启动画,默认为 True 开启。animation: bool = True,# 是否开启动画的阈值,当单个系列显示的图形数量大于这个阈值时会关闭动画。默认 2000。animation_threshold: Numeric = 2000,# 初始动画的时长,默认值为 1000。# 支持回调函数,可以通过每个数据返回不同的 delay 时间实现更戏剧的初始动画效果:animation_duration: Union[Numeric, JSFunc] = 1000,# 初始动画的缓动效果。# 不同的缓动效果可以参考,缓动示例 (https://www.echartsjs.com/gallery/editor.html?c=line-easing)。animation_easing: Union[str] = "cubicOut",# 初始动画的延迟,默认值为 0。# 支持回调函数,可以通过每个数据返回不同的 delay 时间实现更戏剧的初始动画效果。animation_delay: Union[Numeric, JSFunc] = 0,# 数据更新动画的时长,默认值为 300。# 支持回调函数,可以通过每个数据返回不同的 delay 时间实现更戏剧的更新动画效果:animation_duration_update: Union[Numeric, JSFunc] = 300,# 数据更新动画的缓动效果。# 不同的缓动效果可以参考,缓动示例 (https://www.echartsjs.com/gallery/editor.html?c=line-easing)。animation_easing_update: Union[Numeric] = "cubicOut",# 数据更新动画的延迟,默认值为 0。# 支持回调函数,可以通过每个数据返回不同的 delay 时间实现更戏剧的更新动画效果。animation_delay_update: Union[Numeric, JSFunc] = 0,
)

使用

from pyecharts.charts import Bar
from pyecharts.faker import Faker
from pyecharts.globals import ThemeTypec = (Bar({"theme": ThemeType.MACARONS}).add_xaxis(Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis("商家B", Faker.values()).set_global_opts(title_opts={"text": "Bar-通过 dict 进行配置", "subtext": "我也是通过 dict 进行配置的"}).render("bar_base_dict_config.html")
)

参考资料:

Apache ECharts

GitHub - pyecharts/pyecharts: 🎨 Python Echarts Plotting Library

pyecharts - A Python Echarts Plotting Library built with love.


http://www.ppmy.cn/news/31395.html

相关文章

【GNN/深度学习】常用的图数据集(资源包)

【GNN/深度学习】常用的图数据集(图结构) 文章目录【GNN/深度学习】常用的图数据集(图结构)1. 介绍2. 图数据集2.1 Cora2.2 Citeseer2.3 Pubmed2.4 DBLP2.5 ACM2.6 AMAP & AMAC2.7 WIKI2.8 COCS2.9 BAT2.10 EAT2.11 UAT2.12 C…

C++基础——C++面向对象之数据封装、数据抽象与接口基础总结

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C语言开发基础总结》 《从0到1学习嵌入式Linux开发》 《QT开发实战》 《Android开发实…

从入门到精通MongoDB数据库系列之二:深入了解MongoDB基本概念文档、集合、数据库、数据类型、MongoDB shell

从入门到精通MongoDB数据库系列之二:深入了解MongoDB基本概念文档、集合、数据库、数据类型、MongoDB shell 一、MongoDB基本概念二、文档三、集合1.动态模式2.命名四、数据库五、MongoDB shell1.运行shell2.连接远程MongoDB数据库3.shell中的基本操作六、数据类型1.基本数据类…

Java开发 - 消息队列前瞻

前言 学完了Redis,那你一定不能错过消息队列,要说他俩之间的关联?关联是有的,但也不见得很大,只是他们都是大数据领域常用的一种工具,一种用来提高程序运行效率的工具。常见于高并发,大数据&am…

全流程基于最新导则下的生态环境影响评价技术方法及图件制作与案例

目录 专题一、生态环境影响评价框架及流程 专题二、基于遥感解译的土地利用现状图的编制 专题三、生物多样性测定及R语言分析 专题四、植被类型及植被覆盖度图的编制 专题五、生物量与净初级生产力测定:实测及模型 专题六、生态系统类型及服务价值评估 专题七…

Easy Deep Learning——卷积层

为什么需要卷积层,深度学习中的卷积是什么? 在介绍卷积之前,先引入一个场景 假设您在草地上漫步,手里拿着一个尺子,想要测量草地上某些物体的大小,比如一片叶子。但是叶子的形状各异,并且草地非…

Jedis 使用详解(官方原版)

一、配置 Maven 依赖项Jedis也通过Sonatype作为Maven Dependency 分发。要配置它&#xff0c;只需将以下 XML 代码段添加到您的 pom.xml 文件中。<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.…

打怪升级之字符串的分界符与字符串替换

流的字符串分界符 在C的iostream中&#xff0c;有流的字符串分界符&#xff1a; " “和”"都代表简单的分隔。 因此&#xff0c;使用流来做字符串分隔的话&#xff0c;有一个比较简单的方案就是将原定义的分隔符通过替换的方式变成流的分隔符。然后再录入流中就能…