100天精通Python(可视化篇)——第90天:Pyecharts可视化神器基础入门

news2024/12/22 23:57:55

文章目录

  • 专栏导读
  • 一、pyecharts 介绍
    • 1. 简介
    • 2. 版本说明
  • 二、pyecharts 特点
  • 三、pyecharts 安装
  • 四、基本步骤
  • 五、快速开始
    • 1. 数据准备
      • 1)类别数据
      • 2)时间数据
      • 3)颜色数据
      • 4)地理数据
      • 5)世界人口数据
      • 6)选择数据
      • 7)演示
    • 2. 绘图输出到 jupyter notebook
    • 3. 绘图输出到 html文件
    • 4. 链式写法
    • 5. 配置选项

专栏导读

🔥🔥本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html

  • 优点订阅限时9.9付费专栏进入千人全栈VIP答疑群,作者优先解答机会(代码指导、远程服务),群里大佬众多可以抱团取暖(大厂内推机会)
  • 专栏福利简历指导、招聘内推、每周送实体书、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等
    在这里插入图片描述
    在这里插入图片描述

一、pyecharts 介绍

1. 简介

pyecharts是一个基于Echarts.js库的Python可视化工具,可以用于生成各种类型的图表,包括折线图、柱状图、散点图、地图等等。pyecharts提供了一套简单易用的API,可以方便地进行数据处理和图表生成,同时还支持多种输出格式,包括HTML、Jupyter Notebook、图片等。并且可以生成独立的网页,可以与flask、Django框架搭配使用编写前后端项目;后续也会带着大家完成可视化大屏项目。

官方中文文档:https://pyecharts.org/#/zh-cn/global_options

官方Github链接:https://github.com/pyecharts/pyecharts/

2. 版本说明

V0.5x版本:不再进行维护。仅支持python2.7、3.4+

V1.0x版本:仅支持python3.6+;V1 版本开始支持链式调用

二、pyecharts 特点

  • 支持多种类型的图表,包括基本的图表类型和复杂的地图类型;
  • 提供了丰富的图表样式和配置选项,可以自定义图表的颜色、标签、标题等;
  • 支持多种数据格式,包括Python内置的数据结构和常见的数据文件格式;
  • 提供了简单易用的API,可以方便地进行数据处理和图表生成;
  • 支持多种输出格式,包括HTML、Jupyter Notebook、图片等。

pyecharts常用图像有:

  • Bar(柱状图/条形图)
  • Bar3D(3D 柱状图)
  • Boxplot(箱形图)
  • EffectScatter(带有涟漪特效动画的散点图)
  • Funnel(漏斗图)
  • Gauge(仪表盘)
  • Geo(地理坐标系)
  • Graph(关系图)
  • HeatMap(热力图)
  • Kline(K线图)
  • Line(折线/面积图)
  • Line3D(3D 折线图)
  • Liquid(水球图)
  • Map(地图)
  • Parallel(平行坐标系)
  • Pie(饼图)
  • Polar(极坐标系)
  • Radar(雷达图)
  • Sankey(桑基图)
  • Scatter(散点图)
  • Scatter3D(3D 散点图)
  • ThemeRiver(主题河流图)
  • WordCloud(词云图)

三、pyecharts 安装

安装模块:

pip install pyecharts

如果需要绘制地理图相关内容,需要安装地图文件:

  • 中国市级地图: echarts-china-cities-pypkg

  • 中国省级地图: echarts-china-provinces-pypkg

  • 全球国家地图: echarts-countries-pypkg

pip install pyecharts
pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg

四、基本步骤

使用 Pyecharts 创建图形的基本步骤是

  1. 准备数据

  2. 设计图形的样式、背景颜色

  3. Pyecharts 绘图

  4. 设计图表的标题或者图例等属性

  5. 导出至 html

五、快速开始

1. 数据准备

pyecharts自带的数据集存储于 faker.py 文件中,这些以列表的方式存储,主要包含类别数据、时间数据、颜色数据、地理数据、世界人口数据。

1)类别数据

clothes = ["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"]
drinks = ["可乐", "雪碧", "橙汁", "绿茶", "奶茶", "百威", "青岛"]
phones = ["小米", "三星", "华为", "苹果", "魅族", "VIVO", "OPPO"]
fruits = ["草莓", "芒果", "葡萄", "雪梨", "西瓜", "柠檬", "车厘子"]
animal = ["河马", "蟒蛇", "老虎", "大象", "兔子", "熊猫", "狮子"]
cars = ["宝马", "法拉利", "奔驰", "奥迪", "大众", "丰田", "特斯拉"]
dogs = ["哈士奇", "萨摩耶", "泰迪", "金毛", "牧羊犬", "吉娃娃", "柯基"]

2)时间数据

week = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
week_en = "Saturday Friday Thursday Wednesday Tuesday Monday Sunday".split()
clock = (
    "12a 1a 2a 3a 4a 5a 6a 7a 8a 9a 10a 11a 12p "
    "1p 2p 3p 4p 5p 6p 7p 8p 9p 10p 11p".split()
)
months = ["{}月".format(i) for i in range(1, 13)]
days_attrs = ["{}天".format(i) for i in range(30)]
days_values = [random.randint(1, 30) for _ in range(30)]

3)颜色数据

visual_color = [
    "#313695",
    "#4575b4",
    "#74add1",
    "#abd9e9",
    "#e0f3f8",
    "#ffffbf",
    "#fee090",
    "#fdae61",
    "#f46d43",
    "#d73027",
    "#a50026",
]

4)地理数据

provinces = ["广东", "北京", "上海", "江西", "湖南", "浙江", "江苏"]
guangdong_city = ["汕头市", "汕尾市", "揭阳市", "阳江市", "肇庆市", "广州市", "惠州市"]
country = [
    "China",
    "Canada",
    "Brazil",
    "Russia",
    "United States",
    "Africa",
    "Germany",
]

5)世界人口数据

2019年世界人口数据集,结构为二层嵌套列表,结构如下,第一列为国家或地区,第二列为人口数量:

POPULATION = [
    ["Country (or dependency)", "Population\n(2019)"],
    ["China", 1420062022],
    ["India", 1368737513],
    ["United States", 329093110],
    ["Indonesia", 269536482],
    ["Brazil", 212392717],
    ["Pakistan", 204596442],
    ["Nigeria", 200962417],
    ["Bangladesh", 168065920],
    ["Russia", 143895551],
    ["Mexico", 132328035],
    ["Japan", 126854745],
    ["Ethiopia", 110135635],
    ...
]

6)选择数据

choose:随机选择类别数据集

def choose(self) -> list:
    return random.choice(
        [
            self.clothes,
            self.drinks,
            self.phones,
            self.fruits,
            self.animal,
            self.dogs,
            self.week,
        ]
    )

values:随机生成7个数字(20-150)构成的列表

@staticmethod
def values(start: int = 20, end: int = 150) -> list:
    return [random.randint(start, end) for _ in range(7)]

rand_color:随机从列表中生成1个颜色值

@staticmethod
def rand_color() -> str:
    return random.choice(
        [
            "#c23531",
            "#2f4554",
            "#61a0a8",
            "#d48265",
            "#749f83",
            "#ca8622",
            "#bda29a",
            "#6e7074",
            "#546570",
            "#c4ccd3",
            "#f05b72",
            "#444693",
            "#726930",
            "#b2d235",
            "#6d8346",
            "#ac6767",
            "#1d953f",
            "#6950a1",
        ]
)

img_path:为路径添加前缀,默认为images

@staticmethod
def img_path(path: str, prefix: str = "images") -> str:
    return os.path.join(prefix, path)

7)演示

这段代码主要是演示了 pyecharts 中的 Faker 和 POPULATION 模块的用法。Faker 模块用于生成一些假数据,例如随机字符串、随机数字、随机颜色等;POPULATION 模块用于提供一些城市的人口数据。在这段代码中,我们分别打印了 Faker 模块中的 week 属性、choose 方法、values 方法和 rand_color 方法,以及 POPULATION 模块。

from pyecharts.faker import POPULATION, Faker  # 导入 pyecharts 中的 Faker 和 POPULATION 模块

print(Faker.week)  # 打印 Faker 模块中的 week 属性,返回一周的日期列表

print(
    Faker.choose(),  # 打印 Faker 模块中的 choose 方法,返回一个随机的字符串
    Faker.values(),  # 打印 Faker 模块中的 values 方法,返回一个随机的数字列表
    Faker.rand_color()  # 打印 Faker 模块中的 rand_color 方法,返回一个随机的 RGB 颜色值
)

print(POPULATION)  # 打印 POPULATION 模块,返回一个包含各个城市人口数量的列表

运行结果:
在这里插入图片描述

2. 绘图输出到 jupyter notebook

在这段代码中,我们首先导入了 pyecharts 中的一些模块,包括 options、charts 和 faker 模块。然后,我们使用 faker 模块中的 choose 和 values 方法生成了 x 轴和 y 轴的数据。接下来,我们创建了一个柱状图对象,并使用 add_xaxis 和 add_yaxis 方法设置 x 轴和 y 轴的数据。

from pyecharts.charts import Bar
from pyecharts.faker import Faker

# 通过列表名指定x轴标签
x_data = Faker.dogs 

# 也可以随机选择x轴标签
# x_data = Faker.choose()

# 随机生成y轴数据
y_data = Faker.values()

# 添加x轴数据
bar.add_xaxis(x_data)

# 添加y轴数据及其名称
bar.add_yaxis("数量", y_data)

# 在notebook中渲染图表
bar.render_notebook()

运行结果:
在这里插入图片描述

3. 绘图输出到 html文件

通过设置bar.render(path='文件名.html')将图表输出到html文件:

# 导入Bar类
from pyecharts.charts import Bar

# 创建一个Bar实例
bar = Bar()

# 添加x轴数据
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])

# 添加y轴数据及其名称
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])

# 生成 HTML 文件
bar.render(path='柱状图.html')

会在指定路径下生成html文件

在这里插入图片描述

点开后如下:
在这里插入图片描述

4. 链式写法

有些程序员喜欢链式调用,或者链式调用在某些情况下可以让代码更加简洁。pyecharts中所有的方法都支持链式调用。比如以上条形图的代码可以改成:

from pyecharts.charts import Bar
from pyecharts.faker import Faker

# 通过列表名指定x轴标签
x_data = Faker.dogs 

# 也可以随机选择x轴标签
# x_data = Faker.choose()

# 随机生成y轴数据
y_data = Faker.values()

# 创建柱状图对象
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis("数量", y_data)
)

# 在notebook中渲染图表
bar.render_notebook()

运行结果:
在这里插入图片描述

5. 配置选项

Pyecharts中的set_global_opts()函数用于设置图表的全局选项,包括标题、图例、x轴、y轴、提示框等。该函数的参数是一个opts.GlobalOpts类型的对象,可以设置以下选项:

  • title_opts: 设置标题选项,包括标题文本、副标题文本、位置、颜色等。
  • legend_opts: 设置图例选项,包括是否显示、位置、颜色等。
  • tooltip_opts: 设置提示框选项,包括触发方式、格式化函数、背景色等。
  • xaxis_opts: 设置x轴��项,包括轴线、刻度、标签等。
  • yaxis_opts: 设置y轴选项,包括轴线、刻度、标签等。
  • visualmap_opts: 设置视觉映射选项,包括映射范围、颜色、标签等。

除了以上选项外,还可以设置其他全局选项,具体可以参考官方文档。

下面是一个示例代码,展示如何使用set_global_opts()函数设置柱状图的全局选项:

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

# 通过列表名指定x轴标签
x_data = Faker.dogs 

# 随机生成y轴数据
y_data = Faker.values()

# 创建柱状图对象
bar = (
    Bar()
    .add_xaxis(x_data)
    .add_yaxis("数量", y_data)
    .set_global_opts(
        title_opts=opts.TitleOpts(title="狗狗数量统计", subtitle="数据来源:Faker.py"),
        legend_opts=opts.LegendOpts(is_show=True, pos_right="20%"),
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-45)),
        yaxis_opts=opts.AxisOpts(name="数量", axislabel_opts=opts.LabelOpts(formatter="{value}只"))
    )
)

# 在notebook中渲染图表
bar.render_notebook()

代码中,使用set_global_opts()函数设置了柱状图的标题、副标题、图例、提示框、x轴、y轴等全局选项。其中,title_opts参数设置了标题和副标题,legend_opts参数设置了图例位置和是否显示,tooltip_opts参数设置了提示框触发方式和指示器类型,xaxis_opts参数设置了x轴标签旋转角度,yaxis_opts参数设置了y轴名称和刻度标签格式。

运行结果
在这里插入图片描述

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

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

相关文章

Netty核心源码剖析(三)

1.Pipeline,Handler和HandlerContext创建源码剖析 1.1.三者的关系 1>.每当ServerSocket创建一个新的连接,就会创建一个Socket,对应的就是目标客户端; 2>.每一个新创建的Socket都将会分配一个全新的ChannelPipeline(以下简称pipeline); 3>.每一个ChannelPipeline内…

LKY_OfficeTools 一键优雅的安装并激活你的Office

何为优雅? 说到Office办公软件 相信都不陌生,一般包括Word、Excel、PowerPoint默认三件套,和Outlook、OneNote、Access。 几乎每台电脑都会配置的 但大多数的情况下 都是先去软件仓库下载 Office 然后使用激活工具去激活Office 这种操作听起…

国内首款医疗大语言模型MedGPT发布,专业医疗标注数据成关键

5月25日,国内互联网医院、慢病管理平台医联今日正式发布了自主研发的基于Transformer架构的国内首款医疗大语言模型——MedGPT。 与通用型的大语言模型产品不同,MedGPT主要致力于在真实医疗场景中发挥实际诊疗价值,实现从疾病预防、诊断、治疗…

机器学习 day14 ( 神经网络,计算机视觉中的引用:人脸识别和汽车识别)

神经网络的发展 最开始的动机:是通过构建软件来模拟大脑,但今天的神经网络几乎与大脑的学习方式无关 我们依据大脑中的神经网络,来构建人工神经网络模型。左图中:一个神经元可以看作一个处理单元,它有很多的输入/树突…

图论与算法(6)最小生成树

1. 带权图及实现 1.1 带全图概述 带权图是一种图形结构,其中图中的边具有权重或成本。每条边连接两个顶点,并且具有一个与之关联的权重值,表示了两个顶点之间的某种度量、距离或成本。 带权图可以用邻接矩阵或邻接表来表示。邻接矩阵是一个…

集成电路(芯片)中VCC、VDD、VSS、GND和AGND等概念

IC芯片 Integrated Circuit Chip 即集成电路芯片,是将大量的微电子元器件(晶体管、电阻、电容、二极管等) 形成的集成电路放在一块塑基上,做成一块芯片。目前几乎所有看到的芯片,都可以叫做 IC芯片 。 SOP与DIP SOP(Small Outline Package…

浅谈备考 系统架构师

这里写自定义目录标题 准备步骤考试形式考试内容学习考试内容训练考试内容其他觉得好的同类参考资料2023年度计算机技术与软件专业技术资格(水平)考试工作计划 第一次产生萌芽的时候三年前,当初备考没有想过要评职称或者成为什么人才&#xf…

antd3和dva-自定义组件初始化值的操作演示和自定义组件校验

前言 在antd3 (react)版和dva下,好像有的项目使用的是getFieldDecorator来获取表单的值的,现在就遇到了一个问题,getFieldDecorator针对antd自带的组件实现效果很好,除去一个form.item只能有一个getFieldDecorator的限制,其他都很好用,但是假如是自定义组件或者说在getFieldDec…

Linux内存管理7——深入理解 slab cache 内存分配全链路实现

1. slab cache 如何分配内存 当我们使用 fork() 系统调用创建进程的时候,内核需要为进程创建 task_struct 结构,struct task_struct 是内核中的核心数据结构,当然也会有专属的 slab cache 来进行管理,task_struct 专属的 slab cac…

iperf3使用

目录 写在前面:带宽和吞吐量安装使用测试TCP吞吐量测试UDP吞吐量测试上下行带宽(TCP双向传输)测试多线程TCP吞吐量测试上下行带宽(UDP双向传输)测试多线程UDP吞吐量 iperf3常用参数通用参数server端参数client端参数 i…

一种星载系统软件定义平台的设计与实现.v3

摘要 针对星载综合射频开放式系统架构,为了在软件综合层面上实现波形应用软件与具体平台的解耦,设计并实现了一种基于软件通信架构(Software Communication Architecture, SCA)的软件平台及其环境工具。通过解决星载平台软件的分…

linuxOPS基础_linux自有服务systemctl

自有服务概述 ​ 服务是一些特定的进程,自有服务就是系统开机后就自动运行的一些进程,一旦客户发出请求,这些进程就自动为他们提供服务,windows系统中,把这些自动运行的进程,称为"服务" ​ 举例…

总结888

学习目标: 月目标:6月(线性代数强化9讲2遍,背诵15篇短文,考研核心词过三遍) 周目标:线性代数强化1讲,英语背3篇文章并回诵,检测 每日必复习(5分钟&#xff…

Java 基础第八章: 接口、内部类、包装类

参考资料 :康师傅的视频课 方法 、 有继承的代码块的加载顺序:先执行父类的静态代码块、子类的静态代码块;然后,执行父类的普通代码块和构造器 子类的的普通代码块和构造器; 总结:由父到子,静…

【Web服务器】Nginx之Rewrite与location的用法

文章目录 前言一、正则表达式1. Nginx 的正则表达式2. 正则表达的优势3. Nginx 使用正则的作用 二、location 的概念1. location 和 rewrite 区别2. location 匹配的分类3. location 常用的匹配规则3.1 location 匹配优先级3.2 location 匹配的实例3.3 实际网站规则定义第一个必…

深度学习应用篇-计算机视觉-图像分类[2]:LeNet、AlexNet、VGG、GoogleNet、DarkNet模型结构、实现、模型特点详细介绍

【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍:【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化…

RabbitMQ - 发布确认

RabbitMQ - 发布确认 发布确认逻辑发布确认的策略单个确认发布批量确认发布异步确认发布 发布确认逻辑 生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始),一旦消…

什么时候 MySQL 查询会变慢?

前面几篇文章和小伙伴们聊的基本上都是从索引的角度去优化 MySQL 查询,然而,索引创建的好,并不意味着查询就一定快,影响查询效率的因素特别多,今天我们就来聊一聊这些可能影响到查询的因素。 1. 查询流程 开始今天的…

欢迎来到新世界

(1) 我去年对技术的发展是比较灰心的: 云原生:技术一直动荡,SOA->Servless、Docker->WASM、GitOpsCICDDevOps云计算:在中国从公有云走向了私有云,乃至金融云、国资云、政务云等等N种云Saa…

圆满收官!飞桨黑客松第四期高手云集,四大赛道开源贡献持续升级

2023年2月20日PaddlePaddle Hackathon 飞桨黑客马拉松(以下简称为“飞桨黑客松”)第四期活动发布后,开发者们反响热烈,围绕四大赛道展开了激烈角逐,超过2000位社区开发者参与到飞桨黑客松中,完成800余次任务…