当前位置: 首页 > news >正文

探索Pyecharts之美-绘制多彩旭日图的艺术与技巧【第37篇—python:旭日图】

文章目录

    • 引言
    • 准备工作
    • 绘制基本旭日图
    • 调整颜色和样式
    • 添加交互功能
    • 定制标签和标签格式
    • 嵌套层级数据
    • 高级样式与自定义
    • 进阶主题:动态旭日图
    • 数据源扩展:外部JSON文件
    • 总结

引言

数据可视化在现代编程中扮演着重要的角色,而Pyecharts是Python中一个强大的图表库,可以轻松实现各种炫酷的数据可视化效果。其中,旭日图是一种展示层次结构数据的理想选择,通过不同的颜色和半径呈现数据的层级和关系。在本篇技术博客中,我们将深入探讨Pyecharts中绘制旭日图的多种参数,同时提供实用的代码示例,帮助你更好地利用这一功能。
在这里插入图片描述

准备工作

在开始之前,请确保你已经安装了Pyecharts库。如果没有安装,可以使用以下命令进行安装:

pip install pyecharts

绘制基本旭日图

首先,我们从最基本的旭日图开始,使用Pyecharts的Sunburst类。

from pyecharts import options as opts
from pyecharts.charts import Sunburstdata = {"name": "root","children": [{"name": "A", "value": 10},{"name": "B", "value": 20},{"name": "C", "value": 15},{"name": "D", "value": 25},],
}sunburst = Sunburst()
sunburst.add("", data['children'], radius=[0, "90%"])
sunburst.set_global_opts(title_opts=opts.TitleOpts(title="基本旭日图"))
sunburst.render("basic_sunburst.html")

在上述代码中,我们定义了一个简单的层级结构数据,然后使用Sunburst类绘制了基本的旭日图。radius参数用于设置旭日图的半径范围。
在这里插入图片描述

调整颜色和样式

为了让旭日图更具吸引力,我们可以调整颜色和样式。

from pyecharts import options as opts
from pyecharts.charts import Sunburstdata = {"name": "root","children": [{"name": "A", "value": 10},{"name": "B", "value": 20},{"name": "C", "value": 15},{"name": "D", "value": 25},],
}sunburst = Sunburst()
sunburst.add("", data['children'], radius=[0, "90%"], color_scheme="purple")
sunburst.set_global_opts(title_opts=opts.TitleOpts(title="调整颜色和样式"),legend_opts=opts.LegendOpts(is_show=False),
)
sunburst.render("styled_sunburst.html")

在这个例子中,我们使用了color_scheme参数来指定颜色方案,并通过legend_opts隐藏了图例。

添加交互功能

为了增强用户体验,我们可以添加一些交互功能,如数据提示和缩放。

from pyecharts import options as opts
from pyecharts.charts import Sunburstdata = {"name": "root","children": [{"name": "A", "value": 10},{"name": "B", "value": 20},{"name": "C", "value": 15},{"name": "D", "value": 25},],
}sunburst = Sunburst()
sunburst.add("", data['children'], radius=[0, "90%"], color_scheme="purple")
sunburst.set_global_opts(title_opts=opts.TitleOpts(title="添加交互功能"),legend_opts=opts.LegendOpts(is_show=False),tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{b}: {c}"),toolbox_opts=opts.ToolboxOpts(is_show=True, feature={"saveAsImage": {}}),
)
sunburst.render("interactive_sunburst.html")

在这个例子中,我们通过tooltip_opts添加了数据提示,toolbox_opts增加了保存为图片的功能。

定制标签和标签格式

在旭日图中,标签对于传达信息非常重要。我们可以通过label_opts参数来定制标签的样式和格式。

from pyecharts import options as opts
from pyecharts.charts import Sunburstdata = {"name": "root","children": [{"name": "A", "value": 10},{"name": "B", "value": 20},{"name": "C", "value": 15},{"name": "D", "value": 25},],
}sunburst = Sunburst()
sunburst.add("",data['children'],radius=[0, "90%"],color_scheme="purple",label_opts=opts.LabelOpts(formatter="{b}: {c}", position="inside"),
)
sunburst.set_global_opts(title_opts=opts.TitleOpts(title="定制标签和标签格式"),legend_opts=opts.LegendOpts(is_show=False),
)
sunburst.render("custom_label_sunburst.html")

在上述代码中,我们使用了label_opts参数来设置标签的格式和位置,通过formatter来自定义标签的显示内容。

嵌套层级数据

如果你的数据包含多个层级,你可以通过嵌套的方式表示。

from pyecharts import options as opts
from pyecharts.charts import Sunburstdata = {"name": "root","children": [{"name": "A","children": [{"name": "A1", "value": 10},{"name": "A2", "value": 20},],},{"name": "B","children": [{"name": "B1", "value": 15},{"name": "B2", "value": 25},],},],
}sunburst = Sunburst()
sunburst.add("", data['children'], radius=[0, "90%"], color_scheme="purple")
sunburst.set_global_opts(title_opts=opts.TitleOpts(title="嵌套层级数据"),legend_opts=opts.LegendOpts(is_show=False),
)
sunburst.render("nested_sunburst.html")

在这个例子中,我们通过嵌套层级的方式,更好地表达了数据之间的关系。
在这里插入图片描述

高级样式与自定义

如果你需要更高级的样式和自定义,可以进一步使用Pyecharts提供的丰富功能,如渐变色、阴影效果等。

from pyecharts import options as opts
from pyecharts.charts import Sunburstdata = {"name": "root","children": [{"name": "A", "value": 10},{"name": "B", "value": 20},{"name": "C", "value": 15},{"name": "D", "value": 25},],
}sunburst = Sunburst()
sunburst.add("",data['children'],radius=[0, "90%"],color_scheme="purple",label_opts=opts.LabelOpts(formatter="{b}: {c}", position="inside"),itemstyle_opts=opts.ItemStyleOpts(border_color="white",border_width=1,opacity=0.7,shadow_blur=10,shadow_color="rgba(120, 36, 50, 0.5)",),
)
sunburst.set_global_opts(title_opts=opts.TitleOpts(title="高级样式与自定义"))
sunburst.render("advanced_sunburst.html")

在这个例子中,我们通过itemstyle_opts参数实现了边框、透明度和阴影效果的自定义。
在这里插入图片描述

进阶主题:动态旭日图

在一些场景下,我们希望展示数据的动态变化,这时候可以借助Pyecharts的Timeline组件,创建一个动态的旭日图。

from pyecharts import options as opts
from pyecharts.charts import Sunburst, Timeline# 模拟多个时间点的数据
data_timeline = [{"time": "2023-01-01","data": {"name": "root","children": [{"name": "A", "value": 15},{"name": "B", "value": 25},{"name": "C", "value": 20},{"name": "D", "value": 30},],},},# 添加更多时间点的数据...
]timeline = Timeline()for time_data in data_timeline:sunburst = Sunburst()sunburst.add("",time_data['data']['children'],radius=[0, "90%"],color_scheme="purple",label_opts=opts.LabelOpts(formatter="{b}: {c}", position="inside"),)sunburst.set_global_opts(title_opts=opts.TitleOpts(title=f"动态旭日图 - {time_data['time']}"),legend_opts=opts.LegendOpts(is_show=False),)timeline.add(sunburst, time_data['time'])timeline.render("dynamic_sunburst.html")

在这个例子中,我们使用了Timeline组件,根据不同时间点的数据绘制了一系列动态的旭日图。这是一个强大的工具,使得你可以清晰地展示数据在时间轴上的演变过程。

数据源扩展:外部JSON文件

当数据较为庞大或需要动态加载时,可以将数据存储在外部JSON文件中,并通过读取文件的方式进行数据绑定。

import json
from pyecharts import options as opts
from pyecharts.charts import Sunburst# 从外部JSON文件读取数据
with open("data.json", "r", encoding="utf-8") as f:external_data = json.load(f)sunburst = Sunburst()
sunburst.add("",external_data['children'],radius=[0, "90%"],color_scheme="purple",label_opts=opts.LabelOpts(formatter="{b}: {c}", position="inside"),
)
sunburst.set_global_opts(title_opts=opts.TitleOpts(title="外部JSON文件数据展示"),legend_opts=opts.LegendOpts(is_show=False),
)
sunburst.render("external_data_sunburst.html")

在上述代码中,我们通过json.load方法读取了外部JSON文件中的数据,然后将其传递给Sunburst图表进行绘制。

总结

通过本文,你学会了如何使用Pyecharts绘制多种炫酷的旭日图,并深入了解了各种参数的用法。无论是基本的图形绘制,还是高级的样式定制,Pyecharts都提供了强大而灵活的工具,助力你创建令人印象深刻的数据可视化图表。希望这篇文章对你在数据可视化的学习和实践中有所帮助。

相关文章:

探索Pyecharts之美-绘制多彩旭日图的艺术与技巧【第37篇—python:旭日图】

文章目录 引言准备工作绘制基本旭日图调整颜色和样式添加交互功能定制标签和标签格式嵌套层级数据高级样式与自定义进阶主题:动态旭日图数据源扩展:外部JSON文件总结 引言 数据可视化在现代编程中扮演着重要的角色,而Pyecharts是Python中一个…...

c++ QT 信号的个人理解 信号就是独立文件调用的一种“协议”

一. 简介 就我个人来理解,信号槽机制与Windows下消息机制类似,消息机制是基于回调函数,Qt中用信号与槽来代替函数指针,使程序更安全简洁。 信号和槽机制是 Qt 的核心机制,可以让编程人员将互不相关的对象绑定在一起&a…...

C#语法(关键字)

C#关键字 关键字是C#编译器预定义的保留字。这些关键字不能作为标识符,但是,如果您想要用它们做标识符,在这个前面加个字符做前缀。 保留关键字abstractasbaseboolbreakbytecasecatchcharcheckedclassconstcontinuedecimaldefaultdelegated…...

让B端管理软件既美观又实用的解决方案来了

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 让B端管理软件既美观又实用的解决方案来了 在当今数字化时代,B端管理软件已…...

npm run dev,vite 配置 ip 访问

启动项目通过本地 ip 的方式访问 方式一.通过修改 package.json "scripts": {"dev": "vite --host 0.0.0.0",}, 方式二.通过修改 vite.config.ts export default defineConfig({plugins: [vue(), vueJsx()],server: { // 配置 host 与 port 方…...

实验3:数据显示输出

1、实验目的: 掌握将内存单元存储的数据显示输出到显示器的方法。 2、实验内容: 将内存单元存储的字节数据(例如 56H)的16进制数的低位输出到显示器并显示。 3、实验要求: (1)运行程序后&a…...

查看 Avro 格式的 Kafka 消息(启用了 Confluent Schema Registry )

使用 Avro 格式传递 Kafka 消息要比 Json 更加高效,因为它是二进制格式,在启用了 Confluent Schema Registry 的情况下,会进一步地提升传输效率,因为 Avro 中的 Schema 信息将不再出现在消息中,消息体积会进一步压缩,同时,还可以利用到 Schema Registry 的其他好处,例如…...

QT+VS实现Kmeans聚类算法

1、Kmeans的定义 聚类是一个将数据集中在某些方面相似的数据成员进行分类组织的过程,聚类就是一种发现这种内在结构的技术,聚类技术经常被称为无监督学习。k均值聚类是最著名的划分聚类算法,由于简洁和效率使得他成为所有聚类算法中最广泛使…...

openssl3.2 - 测试程序的学习 - test\acvp_test.c

文章目录 openssl3.2 - 测试程序的学习 - test\acvp_test.c概述笔记要单步学习的测试函数备注END openssl3.2 - 测试程序的学习 - test\acvp_test.c 概述 openssl3.2 - 测试程序的学习 将test*.c 收集起来后, 就不准备看makefile和make test的日志参考了. 按照收集的.c, 按照…...

Qt Quick 项目(第二集Qt Quick Application创建)

上集回顾 Qt Quick 项目(第一集Qt Quick UI 项目项目创建) 如果将程序的用户界面称为前端,将程序中的数据存储和业务逻辑称为后端,那么传统Qt应用程序的前端和后端都是使用C++来完成的。对于现代软件开发而言,这里有一个存在已久的冲突:前端的演化速度要远快于后端。当用…...

深度强化学习(王树森)笔记03

深度强化学习(DRL) 本文是学习笔记,如有侵权,请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接:https://github.com/wangshusen/DRL 源代码链接:https://github.c…...

Cesium材质特效

文章目录 0.引言1.视频材质2.分辨率尺度3.云4.雾5.动态水面6.雷达扫描7.流动线8.电子围栏9.粒子烟花10.粒子火焰11.粒子天气 0.引言 现有的gis开发方向较流行的是webgis开发,其中Cesium是一款开源的WebGIS库,主要用于实时地球和空间数据的可视化和分析。…...

华为产业链之车载激光雷达

一、智能汽车 NOA 加快普及,L3 上路利好智能感知硬件 1、感知层是 ADAS 最重要的一环 先进驾驶辅助系统 (ADAS, Advanced driver-assistance system)分“感知层、决策层、执行层”三个层级,其中感知层是最重要的一环…...

java的Object类的hasCode()和ToString()

(1)hasCode解释 hashCode()是Object类中定义的方法,用于返回对象的哈希码值。哈希码值是一个整数,用于在哈希表等数据结构中快速定位对象。 在Java中,哈希码值的计算是基于对象的内存地址的。默认情况下,ha…...

php数组算法(1)判断一维数组和多元数组中的元素是否相等并输出键值key

在php中,如何判断[1,0,1]和[ [0, 0, 0],//体质正常 [1, 0, 0],//气虚体质 [0, 1, 0],//血瘀体质 [0, 0, 1],//阴虚体质 [1, 1, 0],//气虚兼血瘀体质 [1, 0, 1],//气虚兼阴虚体质 [0, 1, 1],//血瘀兼阴虚体质 [1, 1, 1],//气虚兼血瘀兼阴虚体质 ];中的第n项相等&…...

已解决Error:AttributeError: module ‘numpy‘ has no attribute ‘float‘.

成功解决Error:AttributeError: module ‘numpy‘ has no attribute ‘float‘. 🌵文章目录🌵 🌳引言🌳🌳报错分析🌳🌳解决方案1:降低NumPy版本🌳&#x1f33…...

WordPress块编辑器(Gutenberg古腾堡)中如何添加脚注?

WordPress默认自带的块编辑器​(Gutenberg古腾堡编辑器)本身就自带添加脚注功能,不过经典编辑器不行。如果想要在WordPress中添加更加专业的脚注,建议使用Modern Footnotes插件,具体介绍及使用请参考『WordPress站点如…...

burpsuite怎么进行本地抓包?ctfer测试自搭建靶场必须学会!

自己搭建靶场测试题目是ctfer不可避免的环节,怎么用burp对本地回环即localhost进行抓包?笔者在本篇分享一下自己的解决经验。 笔者用的是Chrome浏览器,如果是火狐浏览器可以参考本篇:Burp Suite抓不到本地包/localhost包问题解决…...

VSCode Python调试运行:json编写

对于需要在命令行传参运行的项目,如果想要调试运行,则需要编写对应的launch.json文件这里记录一下json文件的编写格式: {"version": "0.2.0","configurations": [{"python": "/data/xxx/minic…...

自动化Web页面性能测试介绍

随着越来越多的用户使用移动设备访问 Web 应用,使得 Web 应用需要支持一些性能并不是很好的移动设备。为了度量和测试 Web 应用是不是在高复杂度的情况下,页面性能能满足用户的需求。 同时,随着 Web 应用的空前发展,前端业务逐渐…...

可视化 | 【d3】力导向关系图优化(搜索+刷新)

文章目录 📚优化内容📚html和css优化🐇搜索框部分🐇刷新按钮部分 📚js🐇搜索框部分🐇刷新部分 前期回顾:【d3】力导图优化,本文主要是基于上篇代码,以代码段添…...

2024.1.26力扣每日一题——计算 K 置位下标对应元素的和

2024.1.26 题目来源我的题解方法一 位运算统计二进制数中1的个数方法二 官方的一种优化计算二进制中1的个数的方法 题目来源 力扣每日一题;题序:2859 我的题解 方法一 位运算统计二进制数中1的个数 对于每一个位置i都去计算i对应的二进制数中1的个数 …...

R语言【taxlist】——levels():获取或设置分类等级列表

Package taxlist version 0.2.4 Description 分类层次结构可以设置为 taxlist 对象中的级别,按从低到高的顺序排列。 在 taxlist 对象中为特定分类概念添加分类级别。此外,概念限制的变化可能涉及其分类层次结构的变化。 Usage levels(x)## S3 method…...

单元测试——题目十三

目录 题目要求: 定义类 测试类 题目要求: 根据输入的三条边值判断能组成何种三角形。三条边为变量a、b、c,范围为1≤边值≤10,不在范围内,提示“输入边值不在范围内”。不满足任意两边之和必须大于第三边,提示“输入边值不能组成三角形”。输入边值能组成三角形,只有…...

使用Linux SDK客户端向AWS Iot发送数据

参考链接: https://ap-southeast-1.console.aws.amazon.com/iot/home?regionap-southeast-1#/test 此篇文章用于测试,使用Linux SDK客户端向AWS Iot发送数据,准备环境如下: 1、客户端环境准备 1.1 客户端操作系统 虚拟机一台…...

1.27学习总结

今天做了些队列的题: 1.逛画展(单调队列) 2.打印队列 Printer Queue(优先队列) 3.[NOIP2010 提高组] 机器翻译(模拟队列) 4.求m区间内的最小值(单调队列板子题) 5.日志统计(滑动窗口,双指针) 总结一下&…...

【算法专题】二分查找(进阶)

📑前言 本文主要是二分查找(进阶)的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日…...

开源项目对于新用户和初学者适合哪些工作

目录 一、阅读和理解文档 二、报告问题 三、测试和验证修复 四、编写和更新文档 五、简单的代码更改和修复 六、参与社区讨论 开源项目对于新用户和初学者来说,提供了宝贵的学习和实践机会。以下是一些适合新用户和初学者参与的工作: 一、阅读和理…...

linux中配置文件目录为什么用etc来命名

在早期的 Unix 系统中,/etc 目录的名称确实来源于单词 “etcetera” 的缩写,最初意味着 “其他”,用来存放杂项或者不属于其他特定目录的文件。然而,随着时间的推移,/etc 目录的用途逐渐演变并专门化。 在现代的 Linux…...

06.领域驱动设计:使用DDD分层架构,可以有效降低层与层之间的依赖

目录 1、概述 2、什么是DDD分层架构 1.用户接口层 2.应用层 3.领域层 4.基础层 3、DDD分层架构最重要的原则是什么 4、DDD分层架构如何推动架构演进 1.微服务架构的演进 2.微服务内服务的演进 5、三层架构如何演进到DDD分层架构 我们该怎样转向DDD分层架构 6、总结…...