基于 Echarts 的 Python 图表库:Pyecahrts交互式的日历图和3D柱状图

文章目录

  • 概述
  • 一、日历图和柱状图介绍
    • 1. 日历图基本概述
    • 2. 日历图使用场景
    • 3. 柱状图基本概述
    • 4. 柱状图使用场景
  • 二、代码实例
    • 1. Pyecharts绘制日历图
    • 2. Pyecharts绘制2D柱状图
    • 3. Pyecharts绘制3D柱状图
  • 总结


概述

本文将引领读者深入了解数据可视化领域中的两个强大工具:Python 编程语言和 Pyecharts 库。我们将详细探讨如何使用 Pyecharts 创建令人印象深刻的柱状图和日历图,通过展示数据之美,提高信息传达的效果。


一、日历图和柱状图介绍

1. 日历图基本概述

日历图是一种用于展示时间数据的独特而强大的数据可视化工具。它以日历的形式呈现数据,让用户可以直观地看到时间的分布和趋势。在 Pyecharts 中,通过使用 Calendar 类,可以轻松地创建日历图。

日历图的特点:
1、时间视觉化: 将时间数据与日历的格子相对应,形成一种直观的时间分布视觉效果。

2、数据呈现: 每个日期格子内可以用颜色、大小等视觉元素来表示相应日期的数据,使得用户能够快速理解数据的高低、变化趋势。

3、周期性分析: 适合展示时间数据的周期性,例如每周、每月或每年的数据波动。

2. 日历图使用场景

1、时间分布可视化: 日历图适用于展示时间数据的分布情况。通过不同日期的颜色深浅或大小变化,可以直观地了解时间上的数据波动和趋势。

2、周期性数据: 当数据具有明显的周期性,例如每日、每周或每月的变化规律时,日历图能够清晰地呈现这种周期性。

3、事件发生频率: 如果你想了解某个事件在一段时间内的发生频率,并希望通过时间轴来展示这一信息,日历图是一个有效的选择。

4、节假日统计: 用于展示节假日的分布情况,对于某些业务场景,特定日期的数据可能会显著不同,日历图可以有效地呈现这些特殊日期。

3. 柱状图基本概述

柱状图是一种常用于展示各类数据的图表类型,它通过矩形的高度来表示不同类别或组的数值大小,以便于比较各组之间的差异和趋势。在 Pyecharts 中,使用 Bar 类可以轻松创建各种类型的柱状图。

柱状图的特点:
1、比较数据: 适用于比较不同组别之间的数据差异,通过柱子的高度可以直观地看出各组数据的相对大小。

2、分类展示: 通常用于呈现离散的、有限的类别数据,每个柱子代表一个类别或组。

3、趋势分析: 可以通过多组柱状图的排列和颜色等方式,展示数据的趋势和变化。

4. 柱状图使用场景

1、比较数据大小: 柱状图是比较不同组别或类别之间数据差异的理想选择。通过柱子的高度,用户可以直观地看到各组数据的相对大小。

2、趋势分析: 用于展示数据的变化趋势,特别是在时间序列中,柱状图可以清晰地呈现数据的上升或下降趋势。

3、分类展示: 柱状图通常用于呈现有限的、离散的类别数据,每个柱子代表一个类别或组。

4、部分和整体的关系: 如果你想比较各组数据与整体的关系,例如占比或分布情况,柱状图能够有效地展示这种关系。

5、堆叠柱状图: 适用于同时展示总体数值和各个部分之间的比例关系,以及各个部分的总体趋势。


二、代码实例

1. Pyecharts绘制日历图

代码如下(示例):

# 导入需要的库
import datetime
import random

# 导入 Pyecharts 中的相关模块
from pyecharts import options as opts
from pyecharts.charts import Calendar

# 定义起始和结束日期
begin = datetime.date(2017, 1, 1)
end = datetime.date(2017, 12, 31)

# 生成模拟数据,每一天的步数随机生成
data = [
    [str(begin + datetime.timedelta(days=i)), random.randint(1000, 25000)]
    for i in range((end - begin).days + 1)
]

# 创建 Calendar 图
c = (
    Calendar()
    # 添加数据和配置,指定时间范围为2017年
    .add("", data, calendar_opts=opts.CalendarOpts(range_="2017"))
    .set_global_opts(
        # 设置图表标题
        title_opts=opts.TitleOpts(title="Calendar-2017年微信步数情况"),
        # 配置视觉映射
        visualmap_opts=opts.VisualMapOpts(
            max_=20000,
            min_=500,
            orient="horizontal",
            is_piecewise=True,
            pos_top="230px",
            pos_left="100px",
        ),
    )
    # 渲染并保存为HTML文件
    .render("calendar_base.html")
)


2. Pyecharts绘制2D柱状图

代码如下(示例):

# 导入 Pyecharts 中的相关模块和 Faker 模块
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker

# 创建 Bar 图实例
c = (
    Bar()  # 创建 Bar 图
    .add_xaxis(Faker.days_attrs)  # 添加 x 轴数据,使用 Faker 模块生成的日期数据
    .add_yaxis("商家A", Faker.days_values, color=Faker.rand_color())  # 添加 y 轴数据,商家A的数据,设置颜色
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Bar-DataZoom(inside)"),  # 设置图表标题
        datazoom_opts=opts.DataZoomOpts(type_="inside"),  # 配置数据缩放选项,类型为"inside"
    )
    .render("bar_datazoom_inside.html")  # 渲染并保存为HTML文件
)

pyecharts柱状图

3. Pyecharts绘制3D柱状图

代码如下(示例):

# 导入 random 模块和 Pyecharts 中的相关模块
import random
from pyecharts import options as opts
from pyecharts.charts import Bar3D

# 定义 x 和 y 轴数据
x_data = y_data = list(range(10))

# 定义生成数据的函数
def generate_data():
    data = []
    for j in range(10):
        for k in range(10):
            value = random.randint(0, 9)
            data.append([j, k, value * 2 + 4])
    return data

# 创建 Bar3D 图实例
bar3d = Bar3D()

# 循环添加数据,生成10层堆叠柱状图
for _ in range(10):
    bar3d.add(
        "",
        generate_data(),
        shading="lambert",  # 设置光照效果为 Lambert
        xaxis3d_opts=opts.Axis3DOpts(data=x_data, type_="value"),  # x 轴配置
        yaxis3d_opts=opts.Axis3DOpts(data=y_data, type_="value"),  # y 轴配置
        zaxis3d_opts=opts.Axis3DOpts(type_="value"),  # z 轴配置
    )

# 设置全局选项
bar3d.set_global_opts(title_opts=opts.TitleOpts("Bar3D-堆叠柱状图示例"))

# 设置系列选项,堆叠模式为 "stack"
bar3d.set_series_opts(**{"stack": "stack"})

# 渲染并保存为 HTML 文件
bar3d.render("bar3d_stack.html")

3d柱状图


总结

在使用Pyecharts绘制2D和3D柱状图以及日历图时,通过简单而强大的接口,我们能够轻松定制图表外观,呈现数据的分布和趋势。3D柱状图生动展示数据在三维空间中的关系,而日历图则清晰展示时间轴上的数据变化。通过调整参数、定制图表样式,以及利用交互功能,我们能够创建具有吸引力和信息密度的可视化图表,有效传达数据。Pyecharts为数据科学家和分析师提供了强大的工具,帮助用户更好地理解和展示复杂的数据。

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

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

相关文章

数据解构+算法(第07篇):动态编程!黄袍加身!

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖&…

力扣hot100 对称二叉树 递归

Problem: 101. 对称二叉树 文章目录 思路Code 思路 👨‍🏫 参考 Code 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* …

【10秒开服】雾锁王国服务器全自动部署教程

你是火焰之子,一个濒死种族最后的希望火苗。苏醒吧,克服腐化一切的迷雾所裹挟的恐怖,重新夺回你的王国所失落的瑰丽。置身于广袤世界,战胜难以想象的强大Boss,修造宏伟厅堂,在这款至多16名玩家的合作类生存…

sectigo ip ssl证书有哪些

Sectigo是移交成立时间较久的CA认证机构,几十年来在全球颁发了各种各样的数字证书,例如,单域名SSL证书、多域名SSL证书、通配符SSL证书等域名SSL证书。Sectigo旗下也有一些不常见的数字证书,例如,代码签名证书、IP证书…

HTTP中传输协议的数据格式

HTTP 概述:超文本传输协议(Hyper Text Transfer Protocol) 传输协议:定义了客户端和服务器通信时,发送数据的格式 客户端和服务器端交互:客户端向服务器端发送请求,服务器端向客户端响应请求 HTTP特点:…

【RT-DETR有效改进】利用YOLO-MS的MSBlock模块改进ResNet中的Bottleneck(RT-DETR深度改进)

👑欢迎大家订阅本专栏,一起学习RT-DETR👑 一、本文介绍 本文给大家带来的改进机制是利用YOLO-MS提出的一种针对于实时目标检测的MSBlock模块(其其实不能算是Conv但是其应该是一整个模块),我们将其用于替换我们ResNet中Basic组合出一种新的结构,来替换我们网络中的…

【Bugs】Jmeter报错:NoSuchMethodError: org.apache.jmeter.samplers.

报错情况 Jmeter版本:5.4.3 报错场景:在线程组中添加了jpgc - PerfMon Metrics Collector性能监控组件后出现报错。 Jmeter中无法运行测试,cmd命令行中出现以下报错。 cmd报错详细内容: Uncaught Exception java.lang.NoSuchMe…

Mac 上终端配置

Mac 上终端配置 初始化了一下自己的 mac 笔记本,所以重新记一下终端配置,最终的完成版的需求是这样的: 存在的指令需要显示绿色进行提示: 不存在的指令则是显示红色进行提示: 同时具备对指令进行提示 一个看起来…

spark window源码探索

核心类: 1. WindowExec 物理执行逻辑入口,主要doExecute()和父类WindowExecBase 2. WindowFunctionFrame 窗框执行抽象,其子类对应sql语句的不同窗框 其中又抽象出BoundOrdering类, 用于判断一行是否在界限内(Bound), 分为RowBoundOrdering…

2024美赛MCM 问题 C 网球运动的动量(Momentum in Tennis)

2024 MCM Problem C: Momentum in Tennis In the 2023 Wimbledon Gentlemen’s final, 20-year-old Spanish rising star Carlos Alcaraz defeated 36-year-old Novak Djokovic. The loss was Djokovic’s first at Wimbledon since 2013 and ended a remarkable run for one o…

直播团队职责

一、内容策划 直播团队的内容策划人员是整个直播活动的核心,他们需要负责策划直播的主题、内容、形式以及时间安排等。同时,他们还需要负责邀请嘉宾、安排活动等,确保直播内容丰富、有趣、有价值。 二、主播管理 主播是直播活动的关键人物…

提升CKA考试胜算:一文带你全面了解RBAC权限控制!

RBAC概述 RBAC引入了四个新的顶级资源对象。Role、ClusterRole、RoleBinding、 ClusterRoleBinding。同其他 API 资源对象一样,用户可以使用 kubectl 或者 API 调用等 方式操作这些资源对象。kubernetes集群相关所有的交互都通过apiserver来完成,对于这…

计算机网络第4章(网络层)

4.1、网络层概述 简介 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输 这些异构型网络N1~N7如果只是需要各自内部通信,他们只要实现各自的物理层和数据链路层即可 但是如果要将这些异构型网络互连起来,形成一个更大的互…

《云原生安全攻防》-- 云原生安全概述

从本节课程开始,我们将正式踏上云原生安全的学习之旅。在深入探讨云原生安全的相关概念之前,让我们先对云原生有一个全面的认识。 什么是云原生呢? 云原生(Cloud Native)是一个组合词,我们把它拆分为云和原生两个词来…

存内计算芯片研究进展及应用—以基于NorFlash的卷积神经网络量化及部署研究突出存内计算特性

文章目录 存内计算的背景存算一体技术发展历程 存内计算芯片研究现状SRAM存内计算DRAM存内计算ReRAM/PCM存内计算MRAM存内计算NOR Flash存内计算 基于 NOR Flash 的卷积神经网络量化卷积神经网络基本结构卷积神经网络量化方法研究实验及结果分析心得 参考文献 如果我能看得更远…

C语言基础:头歌练习数组练习

(字符串插入) 任务描述 题目描述:输入两个字符串a和b,将b串中的最大字符插入到a串中最小字符后面。 样例输入: MynameisAmy MynameisJane 样例输出: MynameisAymy 题目分析:a字符串中最小的字符是A…

HTML+CSS:全景轮播

效果演示 实现了一个简单的网页布局,其中包含了五个不同的盒子,每个盒子都有一个不同的背景图片,并且它们之间有一些间距。当鼠标悬停在某个盒子上时,它的背景图片会变暗,并且文字会变成白色。这些盒子和按钮都被放在一…

安科瑞智能微型断路器在某银行网点的设计与应用

【摘要】:随着人工智能、移动互联等现代信息技术和通信技术在电力行业的应用,实现电力系统各个环节人机交互、万物互联,打造状态全方面感知、信息合理处理、应用便捷灵活的泛在电力物联网已成为必然趋势。本文主要对智能微型断路器在银行网点…

OpenCV学习记录——平滑处理

文章目录 前言一、图像噪声二、图像平滑处理三、完整应用代码 前言 当我们用树莓派进行opencv图像处理时,摄像头所获取的图像质量通常会有所下降,此时,需要多种手段来优化图像的质量,提高图像识别的准度。今天所记录的是当图片经过…

前端_关于CSS中外边距塌陷问题

问题描述: 当子级块级元素修改带动父级块级元素整体向下移动 我们希望当自级块级元素修改时,父级元素保持不动,解决方法有三个: 原代码: 方案一:为父级元素添加一个内边距 方案二:为父级元素添加overflo…
最新文章