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

news2025/1/18 3:20:48

文章目录

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

引言

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

准备工作

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

pip install pyecharts

绘制基本旭日图

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

from pyecharts import options as opts
from pyecharts.charts import Sunburst

data = {
    "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 Sunburst

data = {
    "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 Sunburst

data = {
    "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 Sunburst

data = {
    "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 Sunburst

data = {
    "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 Sunburst

data = {
    "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都提供了强大而灵活的工具,助力你创建令人印象深刻的数据可视化图表。希望这篇文章对你在数据可视化的学习和实践中有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1416574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法学习之位运算

一、作用 在复杂问题中经常可以作为工具让代码更加优雅。 二、知识储备基础 “~”:取反符 0->1, 1->0 三、常见的两种操作 1.n的二进制表示中第k位数字是几? (1)原理 先右移操作,再与操作。 (2)代码实现…

【C++杂货铺】详解类和对象 [上]

博主:代码菌-CSDN博客 专栏:C杂货铺_代码菌的博客-CSDN博客 目录 🌈前言🌈 📁 面向对象语言的特性 📁 类 📂 概念 📂 定义 📁 访问限定符 📂分类 &#x…

第5章 (python深度学习——波斯美女)

第5章 深度学习用于计算机视觉 本章包括以下内容: 理解卷积神经网络(convnet) 使用数据增强来降低过拟合 使用预训练的卷积神经网络进行特征提取 微调预训练的卷积神经网络 将卷积神经网络学到的内容及其如何做出分类决策可视化 本章将…

线性代数--------学习总结

高斯消去法:对于任意的矩阵,总是能够利用倍加和行变换的方法变化成为阶梯形矩阵(每一行第一个非零元叫做主元,他所在的列就叫做主列------每一行的主列都在他上方任意一行主列的右边)和行简化阶梯矩阵(主元…

C++ STL中list迭代器的实现

list 的模拟实现中,重难点在于迭代器功能的实现,因此本文只围绕 iterator 及 const_iterator 的设计进行介绍,其余如增删查改则不再赘述——在C语言的基础上,这些都非常简单。 与 string / vector 不同,list 的节点原生…

27移除元素(简单)-经典面试150题

题目描述 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出…

【高效开发工具系列】Java读取Html

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

计算机考试-软件设计师

文章目录 基础知识分析与设计结构化方法分析与设计基础知识实战法宝 数据库分析与设计基础知识实战法宝 真题练习09下-结构化分析09上-数据库分析 基础知识 分析与设计 整体分析: 1-4分值 15 或者 20 总分55 分 5-6 选做一题 15 总时间150分钟第一题 15分 15分…

【MAC】Multi-Level Monte Carlo Actor-Critic阅读笔记

基本思想: 利用多层次蒙特卡洛方法(Multi-Level Monte Carlo,MLMC)和Actor-Critic算法,解决平均奖励强化学习中的快速混合问题。 快速混合? 在强化学习中,当我们说一个策略"混合得快"…

绘制太极图 - 使用 PyQt

大家好!今天我们将一起来探讨一下如何使用PyQt,这是一个强大的Python库,来绘制一个传统的太极图。这个图案代表着古老的阴阳哲学,而我们的代码将以大白话的方式向你揭示它的奥秘。 PyQt:是什么鬼? 首先&a…

Python爬虫---Scrapy框架---CrawlSpider

CrawlSpider 1. CrawlSpider继承自scrapy.Spider 2. CrawlSpider可以定义规则,再解析html内容的时候,可以根据链接规则提取出指定的链接,然后再向这些链接发送请求,所以,如果有需要跟进链接的需求,意思就是…

hardware simulation——编译框架优化

目录 介绍 修改前的最新代码和框架 学习和修改 最终版本 介绍 -------------------------------------------------------------------------------------------------------------------------- https://www.cnblogs.com/wittxie/p/9836097.html 上次那个虽然能完成基本…

计算方法实验2:利用二分法及不动点迭代求解非线性方程

一、问题描述 利用二分法及不动点迭代求解非线性方程。 二、实验目的 掌握二分法及不动点迭代的算法原理;能分析两种方法的收敛性;能熟练编写代码实现利用二分法及不动点迭代来求解非线性方程。 三、实验内容及要求 二分法 (1) 编写代码计算下列数字…

STM正点mini-新建工程模板,GPIO及寄存器(介绍)

一.新建工程模板(基于固件库) 1.1库函数与寄存器的区别 这里的启动文件都是根据容量来进行区分的 对MDK而言即使include了,也不知道在哪里找头文件 STM32F10X_HD,USE_STDPERIPH_DRIVER 二.新建工程模板(基于寄存器) 上面的大部分配置与固件库的一样 具体可以看手…

linux03 用户权限

01.三种权限 02.UGO(root账号) 查看权限 不在root文件中写,是因为其他用户不能进来 举个例子 ll是ls -l 第一部分:权限(11个字节) 第一个:d/- d表示文件夹 - 表示一般文件 二到四&#xff1a…

基于springboot+vue的明星周边产品销售网站(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 研究背景…

初识人工智能,一文读懂机器学习之逻辑回归知识文集(6)

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

Java 的文件类的学习总结

目录 一、File 的创建 二、File 类的常用方法 一、File 的创建 二、File 类的常用方法

openssl3.2 - 测试程序的学习

文章目录 openssl3.2 - 测试程序的学习概述笔记openssl3.2 - 测试程序的学习 - 准备openssl测试专用工程的模板openssl3.2 - 测试程序的学习 - test\aborttest.copenssl3.2 - 测试程序的学习 - test\sanitytest.copenssl3.2 - 测试程序的学习 - test\acvp_test.copenssl3.2 - 测…

C++进阶(六)map和set

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、序列式容器与关联式容器二、键值对三、树形结构的关联式容器1、set1、set的介绍2、set的使…