精通Python第18篇—数据之美:Pyecharts水球图绘制与交互的完整教程

news2024/11/19 23:31:48

Pyecharts水球图绘制与交互的完整教程

在数据可视化领域,Pyecharts是一个强大而灵活的工具,它能够以美观的方式呈现各种图表,其中之一就是炫酷水球图。水球图能够生动地展示数据的比例关系,给用户一种直观的感受。本文将深入介绍Pyecharts中绘制多种炫酷水球图的参数说明和代码实战,帮助读者更好地利用这一功能进行数据可视化。

1. 简介

水球图通过调整圆环的颜色和大小,形象地展示了数据的分布情况。Pyecharts库提供了丰富的配置选项,使用户能够定制化图表以满足特定需求。

2. 安装Pyecharts

如果尚未安装Pyecharts,可以使用以下命令进行安装:

pip install pyecharts

3. 基础水球图

首先,让我们创建一个基础的水球图,展示某个指标的完成比例。以下是相应的代码:

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

def basic_liquid() -> Liquid:
    c = (
        Liquid()
        .add("Liquid", [0.6])  # 完成比例,范围在 0 ~ 1 之间
        .set_global_opts(title_opts=opts.TitleOpts(title="基础水球图"))
    )
    return c

# 渲染图表
basic_liquid().render("basic_liquid.html")

在上述代码中,我们使用Liquid类创建了一个基础水球图,通过add方法传入完成比例。运行代码后,将生成一个HTML文件,其中包含了可交互的水球图。
在这里插入图片描述

4. 自定义水球图样式

Pyecharts允许用户自定义水球图的样式,包括颜色、半径、边框等。以下是一个自定义水球图的示例代码:

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

def custom_liquid() -> Liquid:
    c = (
        Liquid()
        .add("Liquid", [0.75],   # 完成比例
             is_outline_show=False,  # 不显示外边框
             shape="rect",   # 设置形状为矩形
             color="#294D99",  # 设置颜色
             label_opts=opts.LabelOpts(
                 font_size=50,  # 设置标签字体大小
                 position="inside"  # 标签显示在内部
             ))
        .set_global_opts(title_opts=opts.TitleOpts(title="自定义水球图"))
    )
    return c

# 渲染图表
custom_liquid().render("custom_liquid.html")

通过修改参数,我们可以调整水球图的形状、颜色、标签位置等,以满足特定设计需求。
在这里插入图片描述

5. 多水球图展示

有时候,我们需要在同一图表中展示多个水球图,以对比不同指标的完成情况。以下是一个多水球图的代码示例:

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

def multi_liquid() -> Liquid:
    c = (
        Liquid()
        .add("Liquid 1", [0.6],  # 完成比例
             label_opts=opts.LabelOpts(position="inside"))
        .add("Liquid 2", [0.4],  # 完成比例
             label_opts=opts.LabelOpts(position="inside"))
        .set_global_opts(title_opts=opts.TitleOpts(title="多水球图展示"))
    )
    return c

# 渲染图表
multi_liquid().render("multi_liquid.html")

在这个示例中,我们通过多次调用add方法,添加了两个水球图到同一个图表中,方便对比不同指标的完成情况。

通过以上示例,我们深入了解了Pyecharts中绘制炫酷水球图的参数说明和代码实战。读者可以根据自己的需求进行定制,创建出令人印象深刻的数据可视化图表。希望本文对你在数据可视化方向的技术探索中有所帮助。

6. 水球图的动态效果

水球图不仅可以静态展示完成比例,还可以通过动态效果增强用户的视觉体验。以下是一个包含动态效果的水球图代码示例:

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

def dynamic_liquid() -> Liquid:
    c = (
        Liquid()
        .add("Liquid", [0.6],
             is_animation=True,   # 启用动画效果
             animation_duration=2000,  # 设置动画时长,单位为毫秒
             label_opts=opts.LabelOpts(position="inside"))
        .set_global_opts(title_opts=opts.TitleOpts(title="动态水球图"))
    )
    return c

# 渲染图表
dynamic_liquid().render("dynamic_liquid.html")

在这个例子中,通过设置is_animation为True启用动画效果,并通过animation_duration参数设置动画时长,使水球图呈现出流畅的动态变化。
在这里插入图片描述

7. 水球图与其他图表的组合

Pyecharts支持将水球图与其他图表进行组合,形成更为复杂的可视化效果。以下是一个将水球图和柱状图结合的代码示例:

from pyecharts import options as opts
from pyecharts.charts import Bar, Liquid, Grid

def combined_chart() -> Grid:
    liquid_chart = (
        Liquid()
        .add("Liquid", [0.6],
             label_opts=opts.LabelOpts(position="inside"))
    )

    bar_chart = (
        Bar()
        .add_xaxis(["Category 1", "Category 2", "Category 3"])
        .add_yaxis("Value", [20, 50, 80])
    )

    grid_chart = (
        Grid()
        .add(liquid_chart, grid_opts=opts.GridOpts(pos_left="60%"))
        .add(bar_chart, grid_opts=opts.GridOpts(pos_right="60%"))
    )

    return grid_chart

# 渲染图表
combined_chart().render("combined_chart.html")

通过Grid类,我们可以在同一画布中组合水球图和柱状图,形成更为丰富的数据展示效果。

8. 数据动态更新与实时展示

在实际应用中,有时需要动态更新水球图中的数据,以实现实时展示的效果。以下是一个简单的数据动态更新的示例:

import time
from pyecharts import options as opts
from pyecharts.charts import Liquid

def dynamic_data_update() -> Liquid:
    liquid_chart = Liquid().add("Liquid", [0.6], label_opts=opts.LabelOpts(position="inside"))
    
    # 定义更新数据的函数
    def update_data():
        while True:
            new_data = [round(random.uniform(0.4, 0.8), 2)]  # 模拟新的完成比例数据
            liquid_chart.add("Liquid", new_data, is_animation=True, animation_duration=1000)
            time.sleep(5)  # 模拟5秒更新一次数据

    # 启动更新数据的线程
    threading.Thread(target=update_data).start()

    return liquid_chart

# 渲染图表
dynamic_data_update().render("dynamic_data_update.html")

这个例子中,我们使用了threading模块创建一个新的线程,定期更新水球图的数据。这样可以实现数据的动态更新和实时展示的效果。

9. 水球图的交互功能

Pyecharts提供了丰富的交互功能,使用户能够与水球图进行互动。以下是一个包含交互功能的水球图代码示例:

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

def interactive_liquid() -> Liquid:
    c = (
        Liquid()
        .add("Liquid", [0.6],
             label_opts=opts.LabelOpts(
                 position="inside",
                 formatter="{a} \n {b}%"
             ))
        .set_global_opts(
            title_opts=opts.TitleOpts(title="交互水球图"),
            tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b}: {c}%")
        )
    )
    return c

# 渲染图表
interactive_liquid().render("interactive_liquid.html")

在这个示例中,通过设置tooltip_opts参数,我们为水球图添加了鼠标悬停时的交互提示,提供更详细的信息。

10. 导出水球图为图片或PDF

在实际项目中,有时需要将生成的水球图导出为图片或PDF格式,以便在报告或演示中使用。Pyecharts提供了方便的导出功能,以下是一个将水球图导出为图片的示例:

from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot as driver
from pyecharts import options as opts
from pyecharts.charts import Liquid

def export_as_image() -> Liquid:
    c = (
        Liquid()
        .add("Liquid", [0.6],
             label_opts=opts.LabelOpts(position="inside"))
        .set_global_opts(title_opts=opts.TitleOpts(title="导出水球图为图片"))
    )

    # 使用 make_snapshot 函数导出为图片
    make_snapshot(driver, c.render(), "liquid_chart.png", type_='png')

# 调用导出函数
export_as_image()

上述代码使用了make_snapshot函数,结合snapshot_selenium模块,将水球图导出为PNG格式的图片。你可以根据需要选择不同的图片格式。
在这里插入图片描述

11. 移动端适配

当需要在移动端展示水球图时,可以通过设置opts.DeviceOpts参数进行适配。以下是一个简单的移动端适配示例:

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

def mobile_adaptation() -> Liquid:
    c = (
        Liquid()
        .add("Liquid", [0.6],
             label_opts=opts.LabelOpts(position="inside"))
        .set_global_opts(
            title_opts=opts.TitleOpts(title="移动端适配水球图"),
            device_opts=opts.DeviceOpts(width="100%", height="500px")  # 设置移动端宽度和高度
        )
    )
    return c

# 渲染图表
mobile_adaptation().render("mobile_adaptation.html")

在这个示例中,通过设置device_opts参数,我们将水球图适配为移动端展示。

结语

通过本文的延伸内容,你学习了一些关于Pyecharts水球图更高级的应用场景,包括导出为图片、移动端适配等。这些技巧可以让你更灵活地应用Pyecharts来满足不同的需求。希望这些内容对你在实际项目中的应用有所帮助,使你能够更加轻松地创建出美观而实用的水球图。如果有其他问题或需要进一步的帮助,请随时提问。

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

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

相关文章

爬虫基础-计算机网络协议

一个数据的传输 这些设备的数据转发是通过协议来完成的&#xff0c;整个互联网可以说是完全由网络协议来维持的 不同的协议分工不同&#xff0c;比如ip协议确保了ip寻址&#xff0c;tcp协议确保了数据完整性 IP地址和URL ip地址 整个网络传输可以比作快递&#xff0c;数据就…

C51 单片机学习(一):基础外设

参考 51单片机入门教程 1. 单片机简介 1.1 定义 单片机&#xff08;Micro Controller Unit&#xff0c;简称 MCU&#xff09; 内部集成了 CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能单片机的任务是信息采集&#xff08;依靠传感器&#xff09;、处…

【Spark系列2】Spark编程模型RDD

RDD概述 RDD最初的概述来源于一片论文-伯克利实验室的Resilient Distributed Datasets&#xff1a;A Fault-Tolerant Abstraction for In-Memory Cluster Computing。这篇论文奠定了RDD基本功能的思想 RDD实际为Resilient Distribution Datasets的简称&#xff0c;意为弹性分…

Linux提权:Docker组挂载 Rsync未授权 Sudo-CVE Polkit-CVE

目录 Rsync未授权访问 docker组挂载 Sudo-CVE漏洞 Polkit-CVE漏洞 这里的提权手法是需要有一个普通用户的权限&#xff0c;一般情况下取得的webshell权限可能不够 Rsync未授权访问 Rsync是linux下一款数据备份工具&#xff0c;默认开启873端口 https://vulhub.org/#/envir…

Linux:共享内存

文章目录 System V共享内存的原理管理共享内存shmgetshmatshmdtshmctl 共享内存和管道实现进程间同步通信 前面介绍完了匿名管道和命名管道&#xff0c;那么本篇要引入的主题是共享内存 System V 作为进程通信部分的内容&#xff0c;共享内存必然有其存在的意义和价值&#x…

RabbitMQ快速实战

目录 什么是消息队列&#xff1f; 消息队列的优势 应用解耦 异步提速 削峰填谷 总结 主流MQ产品特点比较 Rabbitmq快速上手 创建用户admin Exchange和Queue Connection和Channel RabbitMQ中的核心概念总结 什么是消息队列&#xff1f; MQ全称Message Queue&#xf…

从零学习Linux操作系统 第二十二部分 企业域名解析服务的部署及安全优化

# 一、dns的主要信息 关于dns的名词解释&#xff1a;dns: domain name service(域名解析服务) 关于客户端: /etc/resolv.conf dns指向文件 A记录 ##ip地址叫做域名的Address 记录 SOA ##授权起始主机 关于服务端 bind安装包named服务名称/etc/named.conf主配置文件/var/na…

【深度学习:多关节嵌入模型】 Meta 解释的 ImageBind 多关节嵌入模型

【深度学习&#xff1a;多关节嵌入模型】 Meta 解释的 ImageBind 多关节嵌入模型 Meta 发布开源人工智能工具的历史分段任何模型DINOv2 什么是多模态学习&#xff1f;什么是嵌入&#xff1f;什么是 ImageBind&#xff1f;集成在 ImageBind 中的模式图像绑定架构特定模式编码器跨…

window下如何安装ffmpeg(跨平台多媒体处理工具)

ffmpeg是什么? FFmpeg是一个开源的跨平台多媒体处理工具&#xff0c;可以用于录制、转换和流媒体处理音视频。它包含了几个核心库和工具&#xff0c;可以在命令行下执行各种音视频处理操作&#xff0c;如剪辑、分割、合并、媒体格式转换、编解码、流媒体传输等。FFmpeg支持多…

java设计模式:工厂模式

1&#xff1a;在平常的开发工作中&#xff0c;我们可能会用到不同的设计模式&#xff0c;合理的使用设计模式&#xff0c;可以提高开发效率&#xff0c;提高代码质量&#xff0c;提高系统的可拓展性&#xff0c;今天来简单聊聊工厂模式。 2&#xff1a;工厂模式是一种创建对象的…

Java TemporalAdjusters 时间调节器

提供了非常多处理日期相关的函数&#xff1a; 使用示例&#xff1a; /*** JCccc* param args*/public static void main(String[] args) {DateTimeFormatter pattern DateTimeFormatter.ofPattern("yyyy-MM-dd");LocalDateTime now LocalDateTime.now();//获取当月…

备战蓝桥杯---二分(入门)

话不多说&#xff0c;先来个模板题来回顾一下上次讲的&#xff1a; 下面是AC代码&#xff1a; 下面进入正题&#xff1a; 本题对1&#xff0c;2行与3&#xff0c;4行组合&#xff0c;再用二分查找即可实现n^2logn的复杂度。 下面是AC代码&#xff1a; 接题&#xff1a; 让我们…

基于springboot校园交友网站源码和论文

随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&#xf…

QT学习日记 | QT的环境搭建

目录 前言 一、QT概述 二、QT的环境搭建 1、QT SDK安装 2、环境变量的配置 前言 本系列为小编新开的一个系列&#xff0c;主要记录小编学习QT的过程&#xff0c;作为笔记仅供各位参考&#xff1b; 一、QT概述 Qt是一个跨平台C图形应用界面框架&#xff1b;简单来说&#x…

Android 13.0 SystemUI下拉状态栏定制二 锁屏页面横竖屏时钟都居中功能实现二

1.前言 在13.0的系统rom定制化开发中,在关于systemui的锁屏页面功能定制中,由于在平板横屏锁屏功能中,时钟显示的很大,并且是在左旁边居中显示的, 由于需要和竖屏显示一样,所以就需要用到小时钟显示,然后同样需要居中,所以就来分析下相关的源码,来实现具体的功能 如图…

C++:异常体系

异常体系 异常1.C语言传统的处理错误的方式2.C异常概念3.异常的使用3.1异常的抛出和捕获3.2 异常的重新抛出3.3异常安全3.4 异常规范 4.C标准库的异常体系5.异常的优缺点 异常 1.C语言传统的处理错误的方式 终止程序&#xff0c;如assert&#xff0c;缺陷&#xff1a;用户难以…

鸿蒙 ArkTs初识

前提&#xff1a;基于官网3.1/4.0文档。参考官网文档 基于Android开发体系来进行比较和思考。&#xff08;或有偏颇&#xff0c;自行斟酌&#xff09; 吐槽&#xff1a;官网上的案例只有代码和文档解释&#xff0c;没有可以直接运行查看效果的模拟器&#xff0c;这一点上&#…

Qt|大小端数据转换

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

【RTP】webrtc 学习3: webrtc对h264的rtp解包

rtp_rtcp\source\video_rtp_depacketizer_h264.cc【RTP】webrtc 学习2: webrtc对h264的rtp打包 中分析了打包过程的代码,这样再来看解析过程的源码就容易多了:本代码主要基于m79,m98类似。这里注明了jitterbuffer 会再次 做 解析stap-a 变为NAL units解析ParseFuaNalu 第一…

Jmeter 分布式测试

Jmeter单机进行压测&#xff0c;受到单台机器的性能影响&#xff0c;Jmeter支持分布式测试&#xff0c;用一个控制节点去控制多个工作节点去模拟更多的用户。 版本信息 内容版本号JDK1.8Jmeter5.6.2 分布式测试原理 jmeter 官网对分布式测试有说明&#xff0c;jmeter分布式…