精通Python第13篇—数据之光:Pyecharts旭日图的魔法舞台

文章目录

    • 引言
    • 准备工作
    • 绘制基本旭日图
    • 调整颜色和样式
    • 添加交互功能
    • 定制标签和标签格式
    • 嵌套层级数据
    • 高级样式与自定义
    • 进阶主题:动态旭日图
    • 数据源扩展:外部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都提供了强大而灵活的工具,助力你创建令人印象深刻的数据可视化图表。希望这篇文章对你在数据可视化的学习和实践中有所帮助。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习每日小知识】Bias 偏差

计算机视觉是人工智能的一个分支,它使机器能够解释和分析视觉信息。然而,与任何人造技术一样,计算机视觉系统很容易受到训练数据产生的偏差的影响。计算机视觉中的偏见可能会导致不公平和歧视性的结果,从而使社会不平等长期存在。…

Python进阶(1) | 使用VScode写单元测试

Python进阶(1) | 单元测试 2024.01.28 VSCode: 1.85.1 Linux(ubuntu 22.04) 文章目录 Python进阶(1) | 单元测试1. 目的2. Python Profile3. 单元测试框架3.1 什么是单元测试3.2 选一个单元测试框架3.3 编写 Python 单元测试代码3.4 在 VSCode 里发现单元测试3.5 再写一个单元…

问题:github上不了,但是其他网页可以正常打开

问题: github上不了,但是其他网页可以正常打开,试了关闭防火墙,dns刷新,都没用后,参考以下文章成功打开Github 1.Github无法访问解决方法 2.github访问不了?详细解决方法 解决办法&#xff1a…

用Python编写的简单双人对战五子棋游戏

本文是使用python创建的一个基于tkinter库的GUI界面,用于实现五子棋游戏。编辑器使用的是spyder,该工具。既方便做数据分析,又可以做小工具开发, 首先,导入tkinter库:import tkinter as tk,这…

leetcode刷题日志-146LRU缓存

思路:使用hashmap储存key,vaule,使用双向链表以快速查到尾结点(待逐出的节点),链表的题一定要在纸上画一下,不然连着连着就不知道连在哪里去了 class LRUCache {public class ListNode {int ke…

Java基础常见面试题总结(下)

常见的Exception有哪些? 常见的RuntimeException: ClassCastException //类型转换异常IndexOutOfBoundsException //数组越界异常NullPointerException //空指针ArrayStoreException //数组存储异常NumberFormatException //数字格式化异常ArithmeticE…

【Mac】windows PC用户转用Mac 配置笔记

win转mac使用的一些配置笔记;感觉mac在UI上还是略胜一筹,再配合在win上的操作习惯就体验更好了,对日常办公需求的本人足以。 优化设置 主要 操作优化 AltTab: win 习惯查看全部活动的alt键,对比cmdtab多了可以预览&…

前端——JavaScript

目录 文章目录 前言 一. JavaScript基础 1.JavaScript基本结构 2. JavaScript 执行过程 3. JavaScript 引入方式 二. JavaScript 语法 1.数据类型 2.变量 2.1 var 关键字定义变量 2.2 let 关键字定义变量 2.3 var 与 let 的区别 3.字符串 3.1定义字符串 3.2 字…

Px4学习:进入控制台的方法

运行命令 ls /dev/tty* 会列出所有端口 然后连接飞控通过USB数据线连接到电脑,再运行一次,就可以找到 笔者的是ttyACM0,下面会用到 px4源码 1.13.3 进入控制台 进入PX4源码文件夹,用终端打开,运行命令 ./Tools/mav…

Qt|大小端数据转换

后面打算写Qt关于网络编程的博客,网络编程就绕不开字节流数据传输,字节流数据的传输一般是根据协议来定义对应的报文该如何组包,那这就必然牵扯到了大端字节序和小端字节序的问题了。不清楚的大小端的可以看一下相关资料:大小端模…

jenkins对接K8S

创建连接K8S的凭据 查看需要使用到的命名空间 [rootk8s ~]# kubectl get ns |grep arts-system arts-system Active 16d创建service accounts [rootk8s ~]# kubectl create sa jenkins-k8s -n arts-system serviceaccount/jenkins-k8s created [rootk8s ~]# kubectl…

log4j2 配置入门介绍

配置 将日志请求插入到应用程序代码中需要进行大量的计划和工作。 观察表明,大约4%的代码专门用于日志记录。因此,即使是中等规模的应用程序也会在其代码中嵌入数千条日志记录语句。 考虑到它们的数量,必须管理这些日志语句,而…

CTF CRYPTO 密码学-7

题目名称:敲击 题目描述: 让我们回到最开始的地方 0110011001101100011000010110011101111011011000110110010100110011011001010011010100110000001100100110001100101101001101000011100001100011001110010010110100110100011001000011010100110000…

python简单socket demo

socket说明 socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。除了常见的http请求之外,一些敏感的数据传输常用socket套接字层直接传输数据。一个简单的domo用于熟…

构造器模式

构造器模式 意图 将一个复杂对象的构建和表示分离,使得相同的构建能创建不同的表示。 解释 案例:想象一个角色扮演游戏的特征生成器。最简单的选择是让计算机为你创建角色。如果你想手动选择特征的细节像职业、性别、头发的颜色等。特征的产生是一个循…

【golang】16、dlv 调试工具、vscode+ssh 远程调试

文章目录 Goland Debug 模式崩溃 Goland Debug 模式崩溃 有时遇到如下现象: Golang Run 模式正常,Debug 无 BreakPoint 模式正常,但 Debug 加 BreakPoint 就会偶现 panic,panic 信息如下。 panic: runtime error: index out of …

敲黑板啦!CSGO游戏搬砖项目操作注意事项

CSGO游戏搬砖项目怎么赚钱的,利润在哪? 1.两个平台之间币种不一样,就存在一个汇率差,两平台装备价格也不一样,汇率差-价格差利润。 CSGO游戏搬砖项目具体有哪些操作步骤? 1、准备一台电脑,配置…

操作系统(7)----调度相关知识点(万字总结~)

目录 一.调度的三个层次 1.高级调度 2.低级调度 3.中级调度 二.进程的挂起状态 三.进程调度的时机 四.进程调度方式 1.非剥夺调度方式 2.剥夺调度方式 五.进程的切换与过程 六.调度器/调度程序 1.调度程序 2.闲逛进程 七.评价调度算法的各个指标 1.CPU利用率 2…

yarn安装第三方插件包,提示报错,yarn的镜像源已经过期了,因为yarn和npm用的是淘宝的镜像源,淘宝的镜像源已经过期了,要设置最新的淘宝镜像源。

淘宝最新镜像源切换_淘宝镜像-CSDN博客 查看yarn用的什么镜像源 yarn config get registry 查看具体的信息 yarn config list 设置淘宝的最新镜像源,yarn和npm都要设置最新的淘宝镜像源,不然还是报错 npm config set registry https://registry.npmm…

Mysql-存储引擎-InnoDB

数据文件 下面这条SQL语句执行的时候指定了ENGINE InnoDB存储引擎为InnoDB: CREATE TABLE tb_album (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 编号,title varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 相册名称,image varc…