数据的绘画工场:Python绘图库Pyecharts,打造引人入胜的可视化效果

news2024/11/19 13:29:08

欢迎阅读本篇文章,本文将带您从零开始,逐步掌握使用Pyecharts库进行数据可视化的技能。Pyecharts是一个基于Echarts的Python可视化库,能够轻松创建各种交互式图表和地图,无论您是数据分析新手还是有经验的开发者,本文都将帮助您深入了解Pyecharts的使用。

目录

  1. 引言
  2. 安装与配置
  3. 创建静态图表
  4. 交互式图表与事件响应
  5. 地图可视化
  6. 数据动态更新
  7. 自定义样式与主题
  8. 导出与分享图表

1. 引言

数据可视化在今天的数据分析和展示中扮演着重要的角色。Pyecharts作为一个功能强大的Python库,为开发者提供了丰富的可视化工具,帮助您将数据转化为直观、易懂的图表,从而更好地理解和传达数据背后的信息。

2. 安装与配置

首先,确保您已经安装了Python。在开始之前,您需要安装Pyecharts库:


pip install pyecharts

安装完成后,您可以创建一个简单的静态图表来验证安装是否成功:


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

# 创建一个柱状图
bar = (
    Bar()
    .add_xaxis(["A", "B", "C", "D", "E"])
    .add_yaxis("数量", [5, 20, 36, 10, 75])
    .set_global_opts(title_opts=opts.TitleOpts(title="示例柱状图"))
)

# 渲染图表到HTML文件
bar.render("bar_chart.html")

image-20230818150640219

3. 创建静态图表

Pyecharts支持多种类型的静态图表,包括柱状图、折线图、散点图等。以下是一个绘制折线图的示例:


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

# 创建一个折线图
line = (
    Line()
    .add_xaxis(["Jan", "Feb", "Mar", "Apr", "May"])
    .add_yaxis("销售额", [200, 300, 400, 350, 500])
    .set_global_opts(title_opts=opts.TitleOpts(title="月度销售趋势"))
)

# 渲染图表到HTML文件
line.render("line_chart.html")

image-20230818150716525

4. 交互式图表与事件响应

一个好的可视化图表需要能够与用户进行交互,Pyecharts支持多种交互方式和事件响应。以下是一个交互式柱状图的示例,展示如何显示数据标签并设置点击事件:

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

# 创建一个交互式柱状图
bar = (
    Bar()
    .add_xaxis(["A", "B", "C", "D", "E"])
    .add_yaxis("数量", [5, 20, 36, 10, 75])
    .set_series_opts(label_opts=opts.LabelOpts(is_show=True))
    .set_global_opts(
        title_opts=opts.TitleOpts(title="交互式柱状图"),
        toolbox_opts=opts.ToolboxOpts(is_show=True),  # 显示工具栏
    )
)

# 渲染图表到HTML文件
bar.render("interactive_bar_chart.html")

# 在HTML文件中添加JavaScript代码
with open("interactive_bar_chart.html", "a", encoding="utf-8") as f:
    f.write("""
    <script src="https://cdn.jsdelivr.net/npm/echarts@5.1.2/dist/echarts.min.js"></script>
    <script>
        var chart = echarts.init(document.getElementById('main'));
        chart.on('click', function(params) {
            console.log(params);
        });
    </script>
    """)

5. 地图可视化

Pyecharts还支持创建丰富多彩的地图可视化。以下是一个绘制中国地图的示例:


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

# 创建一个中国地图
data = [("广东", 100), ("北京", 50), ("上海", 80), ("四川", 60), ("湖南", 70)]
map_chart = (
    Map()
    .add("城市分布", data, "china")
    .set_global_opts(title_opts=opts.TitleOpts(title="中国城市分布"))
)

# 渲染图表到HTML文件
map_chart.render("china_map_chart.html")

image-20230818151521242

6. 数据动态更新

在某些情况下,您可能需要实时地更新图表中的数据。以下是一个动态折线图的示例,展示如何不断更新数据并刷新图表:


import random
import time
from pyecharts import options as opts
from pyecharts.charts import Line

# 创建一个动态折线图
line = Line()
line.add_xaxis([])
line.add_yaxis("数据", [])
line.set_global_opts(title_opts=opts.TitleOpts(title="动态折线图"))

while True:
    x_data = line.options["xAxis"][0]["data"]
    y_data = line.options["series"][0]["data"]

    x_data.append(time.strftime("%H:%M:%S"))
    y_data.append(random.randint(0, 100))

    line.render("dynamic_line_chart.html")
    time.sleep(1)

image-20230818151700575

7. 自定义样式与主题

Pyecharts允许您自定义图表的样式和主题,以满足不同的需求。以下是一个自定义样式的饼图示例:


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

# 创建一个自定义样式的饼图
data = [("A", 25), ("B", 30), ("C", 20), ("D", 15), ("E", 10)]
pie = (
    Pie()
    .add("", data, radius=["40%", "75%"])
    .set_colors(["#9999ff", "#ffcc99", "#66b3ff", "#99ff99", "#ff6666"])
    .set_global_opts(title_opts=opts.TitleOpts(title="自定义样式饼图"))
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}%"))
)

# 渲染图表到HTML文件
pie.render("custom_pie_chart.html")

image-20230818151754662

8. 导出与分享图表

完成图表后,您可以将其导出为HTML文件,也可以将图表嵌入到网页中。以下是一个将图表嵌入到Flask应用中的示例:


from flask import Flask, render_template
from pyecharts.charts import Bar
from pyecharts import options as opts

app = Flask(__name__)

@app.route("/")
def index():
    bar = (
        Bar()
        .add_xaxis(["A", "B", "C", "D", "E"])
        .add_yaxis("数量", [5, 20, 36, 10, 75])
        .set_global_opts(title_opts=opts.TitleOpts(title="示例柱状图"))
    )
    return render_template("index.html", chart=bar.render_embed())

if __name__ == "__main__":
    app.run()
<!DOCTYPE html>
<html>
<head>
    <!-- 引入 Echarts 库 -->
    <script src="https://cdn.jsdelivr.net/npm/echarts@5.1.2/dist/echarts.min.js"></script>
</head>
<body>
    <div id="chart" style="width: 600px; height: 400px;"></div>
    <script>
        var chartData = {{ chart | safe }};
        
        var chart = echarts.init(document.getElementById('chart'));
        chart.setOption(chartData);
    </script>
</body>
</html>

image-20230818152619948

结论

通过本文,您已经学会了从Pyecharts的基本概念到高级功能的使用。希望您能够在数据可视化领域发挥创造力,用Pyecharts创建出精美、交互丰富的图表。记得阅读Pyecharts官方文档以获取更多详细信息和示例。祝您在数据可视化的道路上取得成功!

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

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

相关文章

【计算机视觉】相机基本知识(还在更新)

1.面阵工业相机与线阵工业相机 1.1 基本概念区别 面阵相机则主要采用的连续的、面状扫描光线来实现产品的检测&#xff1b; 线阵相机即利用单束扫描光来进行物体扫描的工作的。 1.2 优缺点 &#xff08;1&#xff09;面阵CCD工业相机&#xff1a; 优点&#xff1a;应用面…

ZooKeeper集群服务器启动

在本文中&#xff0c;我们将对集群版ZooKeeper服务器的启动过程做详细讲解。集群和单机ZooKeeper服务器的启动过程在很多地方都是一致的&#xff0c;因此本节只会对有差异的地方展开进行讲解。下图所示是集群版ZooKeeper服务器的启动流程图。 预启动 预启动的步骤如下。 (1)统…

财报解读:上半年业绩实现增长,药师帮业务飞轮已经开始旋转?

今年6月底登陆港股的药师帮&#xff0c;近日发布了上市后的首份财务报告。 财报显示&#xff0c;2023年上半年&#xff0c;药师帮实现营收增长、经调整后净利润转正的成果&#xff0c;再次验证了二级市场对于其发展潜力的看好——6月底上市以来&#xff0c;药师帮股价涨幅接近…

Mybatis的学习笔记(IDEA快捷键,参数占位符,转义符)

一、IDEA快捷键&#xff1a; IDEA多行注释&#xff1a;ctrlShift/ 单行注释&#xff1a;ctrl/ 导入包&#xff0c;自动修正代码&#xff1a;altenter 自动生成代码&#xff1a;altinsert 二、Mybatis重要知识点&#xff1a; 2.1 参数占位符 一共分为2种&#xff1a;#{}和…

idea2023 springboot+mybatis+jsp 初学单表增删改查

创建项目 因为2.7.14使用量较少&#xff0c;特更改spring-boot为2.7.5版本 配置端口号 打开Sm01Application类&#xff0c;右键运行启动项目&#xff0c;或者按照如下箭头启动 启动后&#xff0c;控制台提示如下信息表示成功 此刻在浏览器中输入&#xff1a;http://lo…

盘点市面上的ipad协议对比

友情链接 geweapi.com 点击即可访问! Web网页端&#xff1a;2017年后不再支持新号登录&#xff0c;仅支持老号&#xff0c;并且掉线严重&#xff0c;功能缺失严重。 Xposed技术&#xff1a;在2019年6月份&#xff0c;微信官方在行业重点打击Xposed&#xff0c;自此行业内一片…

企望制造ERP系统 RCE漏洞[2023-HW]

企望制造ERP系统 RCE漏洞 一、 产品简介二、 漏洞概述三、 复现环境四、 漏洞复现小龙POC检测 五、 修复建议 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;…

IO day 4

1、使用两个进程完成两个文件的拷贝&#xff0c;父进程拷贝前一半内容&#xff0c;子进程拷贝后一半内容&#xff0c;并且父进程要阻塞回收子进程资源 #include <myhead.h>int main(int argc, const char *argv[]) {char a[1] {0};pid_t pid;pid fork();//创建一个子进…

马哈鱼数据血缘工具背后的项目: gsp_demo_java 项目简单介绍与使用

0.背景 马哈鱼数据血缘工具(https://www.sqlflow.cn/)是SQLflow工具的中文译名,实际就是sqlflow. 对于SQL flow来说,底层调用的是General SQL Parser(GSP https://sqlparser.com) 的库. 这个gsp有开源的java demo项目:https://github.com/sqlparser/gsp_demo_java 1.快速使用…

Focus-DETR利用双重注意力机制重建编码器,打造最强目标检测模型

前期的文章我们介绍了DETR模型,我们知道DETR模型首先使用CNN卷积神经网络搜集图片的核心特征点,然后把这些特征点整合起来,通过embedding方法,把特征图片转换到特征向量空间。然后根据标准Transformer模型的编码器与解码器进行注意力机制的计算,最后把计算后的数据进行图片…

vue3+ts+vite使用el-breadcrumb实现面包屑组件,实现面包屑过渡动画

简介 使用 element-plus 的 el-breadcrumb 组件&#xff0c;实现根据页面路由动态生成面包屑导航&#xff0c;并实现面包屑导航的切换过渡动画 一、先看效果加粗样式 1.1 静态效果 1.2 动态效果 二、全量代码 <script lang"ts" setup> import { ref, watch…

5个高清视频素材网站

推荐5个高清视频素材网站&#xff0c;免费、付费、商用的都有&#xff0c;可根据自己需求去选择&#xff0c;赶紧收藏吧&#xff01; 菜鸟图库 https://www.sucai999.com/video.html?vNTYxMjky ​ 菜鸟图库网素材非常丰富&#xff0c;网站主要还是以设计类素材为主&#xff…

RCE远程命令执行

逻辑运算符:: &&&#xff1a;代表首先执行命令a&#xff0c;若成功再执行命令b&#xff0c;又被称为短路运算符。 &&#xff1a;代表首先执行命令a再执行命令b&#xff0c;不管a是否成功&#xff0c;都会执行命令b。在执行效率上来说“&&”更加高效。 ||&a…

合宙Air724UG LuatOS-Air LVGL API--简介

为何是 LVGL LVGL 是一个开源的图形库&#xff0c;它提供了创建嵌入式 GUI 所需的一切&#xff0c;具有易于使用的图形元素、漂亮的视觉效果和低内存占用的特点。 LVGL特点&#xff1a; 强大的 控件 &#xff1a;按钮、图表、列表、滑动条、图像等 高级图形引擎&#xff1a;动…

AIGC之文本内容生成概述(下)—— BERT

关于AIGC系列的文章内容&#xff0c;我们在上一期介绍了基础模型Transformer&#xff0c;本期将会继续介绍基于Transformer模型改进的BERT&#xff08;双向编码器表示Transformer&#xff09;模型。如果想要查之前的介绍内容&#xff0c;可以关注本号&#xff0c;翻看之前的文章…

九耶丨阁瑞钛伦特-在项目中找到的经典BUG是什么?

在项目中找到的经典BUG有很多种&#xff0c;以下是其中一些常见的例子&#xff1a; 空指针异常&#xff08;NullPointerException&#xff09;&#xff1a;当程序试图访问一个空对象或未初始化的变量时&#xff0c;会抛出空指针异常。这通常是由于缺少对变量的正确初始化或检查…

知识继承概述

文章目录 知识继承第一章 知识继承概述1.背景介绍第一页 背景第二页 大模型训练成本示例第三页 知识继承的动机 2.知识继承的主要方法 第二章 基于知识蒸馏的知识继承预页 方法概览 1.知识蒸馏概述第一页 知识蒸馏概述第二页 知识蒸馏第三页 什么是知识第四页 知识蒸馏的核心目…

java练习6. 求完数

题目: 请编程求出1000 以内的所有完数。 完数:一个数如果恰好等于它的所有真因子&#xff08;即除了自身外的所有因数&#xff09;之和&#xff0c;这个数就称为"完数"。 public static void main(String[] args) {for (int i 2; i < 1000; i) {int sum0;for (in…

最大公约数题--夏令营

题目&#xff1a; 知识点&#xff1a; 1。数论-欧几里得算法-gcd最大公因数性质 证明性质2&#xff0c;为什么两组的公约数相等&#xff0c;同样&#xff0c;最大公约数也相等 算法表示 int gcd(int a, int b) {return b 0 ? a : gcd(b, a % b); } 2.分析题目&#xff1a;…

java forEach中不能使用break和continue的原因

1.首先了解break和continue的使用范围和作用 1.1使用范围 break适用范围&#xff1a;只能用于switch或者是循环语句中。当然可以用于增强for循环。 continue适用范围: 用于循环语句中。 1.2作用 break: 1. break用于switch语句的作用是结束一个switch语句。 2. break用于循…