python学习之pyecharts库的使用总结

news2024/9/22 7:48:25

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

在这里插入图片描述

【1】Timeline

其是一个时间轴组件,如下图红框所示,当点击红色箭头指向的“播放”按钮时,会呈现动画形式展示每一年的数据变化。

在这里插入图片描述
data格式为DataFrame,数据如下图所示:

在这里插入图片描述

# 初始化Timeline 设置全局宽高
timeline = Timeline(init_opts=opts.InitOpts(width="2000px", height="800px"))
#  data['ReleaseNum'].shape[0]  获取所有行数 这里是20
# range(data['ReleaseNum'].shape[0]) 得到一个[0,20)的列表
 for index, year in zip(range(data['ReleaseNum'].shape[0]), data.index.tolist()):
     bar = (
         Bar()
             .add_xaxis(data['ReleaseNum'].columns.tolist()) #放所有类型
             .add_yaxis("销量", data['ReleaseNum'].iloc[index,].tolist(), label_opts=opts.LabelOpts(position="right"))#数值
             .reversal_axis()# 翻转
             .set_global_opts(title_opts=opts.TitleOpts(title="%d年各类型音乐专辑发行数量" % year, pos_left="center"),
                              legend_opts=opts.LegendOpts(pos_top="30px"),
                              xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=12), name="发行数量"),
                              yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=12), name="音乐专辑类型")
                              )
     )
     timeline.add(bar, year)#添加到时间轴
 timeline.render('releaseNumOfYear.html') # 渲染视图

data['ReleaseNum'] 用来去掉ReleaseNum获取一个二维表,如下图所示:

在这里插入图片描述

data.index.tolist() 获取所有年,得到一个list:

<class 'list'>: [2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019]

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

data['ReleaseNum'].columns.tolist() 得到所有的列label:

<class 'list'>: ['Alternative', 'Ambient', 'Black Metal', 'Blues', 'Boy Band', 'Brit-Pop', 'Compilation', 'Country', 'Dance', 'Death Metal', 'Deep House', 'Electro-Pop', 'Folk', 'Gospel', 'Hard Rock', 'Heavy Metal', 'Holy Metal', 'Indie', 'Indietronica', 'J-Rock', 'Jazz', 'K-Pop', 'Latino', 'Live', 'Lounge', 'Metal', 'Parody', 'Pop', 'Pop-Rock', 'Progressive', 'Punk', 'Rap', 'Retro', 'Rock', 'Techno', 'Trap', 'Unplugged', 'Western']

data['ReleaseNum'].iloc[index,].tolist() 用来获取目标index行的所有列。假设index=0,也就是说获取第一行所有列的数据。

【2】柱状图

原始数据格式如下:
在这里插入图片描述

① 单个柱状图

如下图所示,只有一项发行量。
在这里插入图片描述

 index = [str(x) for x in salesAndScoreOfArtist['artist_id']]
    bar = (
        Bar(init_opts=opts.InitOpts(width="2000px", height="800px"))
            .add_xaxis(index) #作家ID
            .add_yaxis("发行量", salesAndScoreOfArtist['sale'].tolist()) #获取发行量列表

            .set_global_opts(title_opts=opts.TitleOpts(title="2000年-2019年音乐专辑销量前50的音乐作家专辑总销量", pos_left="center"),
                             legend_opts=opts.LegendOpts(pos_top="30px"),
                             xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=90, font_size=12), name="作家id"),
                             yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=12), name="销售量"),
                             tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross")
                             )
            .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    )

② 多项柱状图

在这里插入图片描述

mult_bar = (
        Bar(init_opts=opts.InitOpts(width="2000px", height="800px"))
            .add_xaxis(index)
            .add_yaxis("mtv_score", salesAndScoreOfArtist['mtv_score'].tolist(), stack='stack1')
            # 这里stack意思  数据堆叠,同个类目轴上系列配置相同的 stack 值可以堆叠放置。
            .add_yaxis("rolling_stone_score", salesAndScoreOfArtist['rolling_stone_score'].tolist(), stack='stack1')
            .add_yaxis("music_maniac_score", salesAndScoreOfArtist['music_maniac_score'].tolist(), stack='stack1')
            .set_global_opts(
            xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=90, font_size=12), name="作家id"),
            yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=12), name="评分"),
            title_opts=opts.TitleOpts(title="2000年-2019年音乐专辑销量前50的音乐作家评分数据", pos_left="center"),
            legend_opts=opts.LegendOpts(pos_top="30px"),
            tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"))
            .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    )

③ WordCloud:词云图

在这里插入图片描述

def drawCloud():
    words = pd.read_csv("data/frequencyOfTitle.csv", header=None, names=['word', 'count'])
    data = [(i, j) for i, j in zip(words['word'], words['count'])]
    cloud = (
        WordCloud(init_opts=opts.InitOpts(width="2000px", height="800px"))
            .add("次数", data, word_size_range=[20, 100], shape=SymbolType.ROUND_RECT)
            .set_global_opts(title_opts=opts.TitleOpts(title="2000年-2019年所有音乐专辑名称词汇统计", pos_left="center"),
                             legend_opts=opts.LegendOpts(pos_top="30px"),
                             tooltip_opts=opts.TooltipOpts(is_show=True))
    )
    cloud.render("wordCloud.html")

④ 柱状图+折线图

# 绘制2000年至2019年各类型的音乐专辑的发行数量和销量
def drawReleaseNumAndSalesOfGenre():
    releaseNumAndSalesOfGenre = pd.read_csv("data/releaseNumAndSalesOfGenre.csv", header=None,
                                            names=['Type', 'Sale', 'Num'])
    bar = (
        Bar(init_opts=opts.InitOpts(width="2000px", height="800px"))
            .add_xaxis(releaseNumAndSalesOfGenre['Type'].tolist())
            .add_yaxis("发行量", releaseNumAndSalesOfGenre['Num'].tolist(), label_opts=opts.LabelOpts(is_show=False))

            .set_global_opts(title_opts=opts.TitleOpts(title="2000年-2019年不同类型音乐专辑发行量与销量", pos_left="center"),
                             legend_opts=opts.LegendOpts(pos_top="30px"),
                             xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45, font_size=12), name="音乐专辑类型"),
                             yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=12),
                                                      name="发行量"),
                             tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross")
                             )
            # 添加右侧y轴
            .extend_axis(
                yaxis=opts.AxisOpts(
                    name="销量",
                )
            )
    )
    line = (
        Line()
            .add_xaxis(releaseNumAndSalesOfGenre['Type'].tolist())
            .add_yaxis("销量",
                       releaseNumAndSalesOfGenre['Sale'],
                       yaxis_index=1, 
                       z=2,
                       label_opts=opts.LabelOpts(is_show=False), is_smooth=True)
    )
    bar.overlap(line).render("releaseNumAndSalesOfGenre.html")

在这里插入图片描述
这里yaxis_index=1, 表示使用的 y 轴的 index,在单个图表实例中存在多个 y 轴的时候有用。

这里z=2表示 折线图组件的所有图形的z值。控制图形的前后顺序。z值小的图形会被z值大的图形覆盖。z 相比 zlevel 优先级更低,而且不会创建新的 Canvas。

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

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

相关文章

数据结构——TreeMap、TreeSet与HashMap、HashSet

目录 一、Map 1、定义 2、常用方法 3、注意 二、TreeMap 三、HashMap 1、定义 2、冲突定义 3、冲突避免方法——哈希函数设计 &#xff08;1&#xff09;、直接定制法(常用) &#xff08;2&#xff09;、除留余数法(常用) &#xff08;3&#xff09;、平方取中法 &…

kubectl命令控制远程k8s集群(Windows系统、Ubuntu系统、Centos系统)

文章目录1. 本地是linux2. 本地是Windows1. 本地是linux 安装kubectl命令 法一&#xff1a;从master的/usr/bin目录下拷贝kubectl文件到本机/usr/bin目录下法二&#xff1a;GitHub下载kubectl文件 在家目录下创建.kube目录config文件 法一&#xff1a;将master上对应用户的~/.…

binlog、redolog、undolog

目录 一、binlong 1、binlog介绍 作用 特点 2、日志格式 3、写入流程 二、redo log 1、redo log作用 2、redo log如何写入 3、怎么提交数据进行刷盘 4、奔溃恢复流程 三、undolog 一、binlong 1、binlog介绍 作用 binlog是 mysql server 层的一种二进制日志&…

GA-PEG-GA,Glutaric Acid-PEG-Glutaric Acid,戊二酸-聚乙二醇-戊二酸供应

英文名称&#xff1a;Glutaric Acid-PEG-Glutaric Acid&#xff0c;GA-PEG-GA 中文名称&#xff1a;戊二酸-聚乙二醇-戊二酸 GA-PEG-GA是一种线性双功能PEG羧酸试剂。PEG和羧基COOH之间存在C4酯键。PEG羧酸可用于与氨基反应&#xff0c;与NHS和DCC、EDC等肽偶联试剂反应。 P…

CUDA原子操作|参加CUDA线上训练营

什么是原子操作 CUDA的原子操作可以理解为对一个Global memory或Shared memory中变 “读取-修改-写入” 这三个操作的一个最小单位的执行过程&#xff0c;在它执量进行行过程中&#xff0c;不允许其他并行线程对该变量进行读取和写入的操作。 基于这个机制&#xff0c;原子操…

实测2023款哪吒U-II,智驾功能对女司机很友好

最近&#xff0c;我们受邀试驾了2023款哪吒U-II。这是一款A级新能源SUV&#xff0c;是哪吒U的改款车型。哪吒U系列自2020年3月上市到2023年1月&#xff0c;累计销售数量达76688台&#xff0c;也因此被称为15万级智能天花板。2023款哪吒U-II的一大亮点是&#xff1a;针对以往哪吒…

react基础,操作属性样式事件。事件处理this指向问题,及案例

1.1 React 起源于 Facebook 于2013年5月开源. 是一个用于构建用户界面的 JavaScript 库, 与vue,angular并称前端三大框架&#xff0c;现在最新版本是18 特点&#xff1a;-数据驱动&#xff08;操作数据&#xff09; - 组件化 - 虚拟DOM 开发环境&#xff1a; cdn引入js <…

Theano教程:Python的内存管理

在写大型程序时候的一大挑战是如何保证最少的内存使用率。但是在Python中的内存管理是比较简单的。Python显示分配内存&#xff0c;使用引用计数系统管理对象&#xff0c;当指向某一个对象的引用数变为 0 的时候&#xff0c;该对象所占的内存就会被释放。理论上听起来很不错&am…

Linux基础语法进阶版

Linux基础语法 查看文件内容指令 touch 主要是修改文件时间&#xff0c;多用创建文件 -a #只更改访问时间 -m #只更改修改时间 -c --no-create#不创建任何文件cat 展示小文件内容 -b #对于非空输出行编号 -n #对于所有行输出编号 -E #在每行结束处显示"$" -A #展示所…

全国重点城市春节商圈客流数据来了,最火爆商圈果然是它 | 数说热点

作为疫情防控政策进一步放开后的首个春节&#xff0c;在“返乡潮”、“出游潮”和各地促销费政策的刺激下&#xff0c;火热强劲且亮点纷呈的线下消费市场随烟火气再次回归。那么2023年春节&#xff0c;线下消费市场呈现出哪些特点&#xff1f;全国各大购物中心在引客流聚人气方…

Java开发学习(五十)----MyBatisPlus快速开发之代码生成器解析

1、代码生成器原理分析 造句: 我们可以往空白内容进行填词造句&#xff0c;比如: 在比如: 观察我们之前写的代码&#xff0c;会发现其中也会有很多重复内容&#xff0c;比如: 那我们就想&#xff0c;如果我想做一个Book模块的开发&#xff0c;是不是只需要将红色部分的内容全部…

uni-app②

文章目录二、微信小程序简介&#xff08;一&#xff09;文档相关开发者工具使用小程序代码构成小程序基本操作三、uniapp 开发规范uniapp 开发环境开发工具下载 HBuilderX工程搭建项目运行浏览器运行四、组件基础组件基础组件列表组件公共属性集合扩展组件自定义组件UNI-ICON五…

MyBatis笔记【JavaEE】

1.MyBatis是什么 持久层框架 【也是一个ORM框架 对象关系映射】 是一个优秀的ORM持久层框架 特点&#xff1a;灵活 支持自定义SQL、存储过程以及高级映射。MyBatis去除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始类…

分布式缓存服务DCS-企业版性能更强,稳定性更高

背景介绍 近年来&#xff0c;随着各行业业务需求急速增加&#xff0c;数据量和并发访问量呈指数级增长&#xff0c;原来只能依附于关系型数据库的传统“缓存”逐渐难以支撑上层业务&#xff0c;开源Redis也面临着如“容量有限”、 “可靠性有限”、 “数据重复拷贝&#xff0c…

GeniE 实用教程(二)几何与网格

目 录一、前言二、Guiding Geometry2.1 Guide Point2.2 Guide Line2.3 Guide Plane2.4 Polyline三、Structure3.1 结构梁3.2 结构板3.1 结构壳四、Mesh4.1 网格属性4.2 网格划分4.3 查看网格五、参考文献一、前言 SESAM &#xff08;Super Element Structure Analysis Module&a…

操作系统(day08)内存

存储单元 内存的几个基本概念 存储单元 内存地址从0开始&#xff0c;每个地址对应一个存储单元 存储单元大小根据计算机按照什么方式编址 按字节编址 则每个存储单元大小为一字节&#xff0c;即1B&#xff0c;即8个二进制位按字编址 看这个计算的字长是多少位&#xff0c;如…

一到重要时刻就大脑空白?

很多人可能都经历过这样一幕&#xff1a;花了好多精力准备的一场考试、面试、演讲&#xff0c;到了上场的那一刻&#xff0c;之前准备的东西全都忘了&#xff0c;大脑一片空白。为什么会这样呢&#xff1f;我们所学到的东西都要经过三个步骤才能成为记忆&#xff1a;获取&#…

Leetcode 每日一题 1234. 替换子串得到平衡字符串

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法......感兴趣就关注我吧&#xff01;你定不会失望。 &#x1f308;个人主页&#xff1a;主页链接 &#x1f308;算法专栏&#xff1a;专栏链接 我会一直往里填充内容哒&#xff01; &…

深入解析golang几种非常主流的依赖注入框架,附实现案例及原理解析

什么是依赖注入&#xff1f; 依赖注入 &#xff0c;英文全名是 dependency injection&#xff0c;简写为 DI。 百科解释&#xff1a; 依赖注入是指程序运行过程中&#xff0c;如果需要调用另一个对象协助时&#xff0c;无须在代码中创建被调用者&#xff0c;而是依赖于外部的注…

【情人节专属】AI一键预测你和Ta的CP值

如何预测你和心仪的Ta有没有夫妻相&#xff1f;基于华为云ModelArts开发的【一键预测你和Ta的CP值】Demo帮你预测CP指数。该模型利用ssim算法综合计算五官特征相似程度&#xff0c;从而得出CP值。//夫妻相的原理在当今心理学、生物学仍有很大争议&#xff0c;夫妻相指数高并不意…