数据可视化~~看板的切换设置+光滑折线图

news2024/11/27 21:52:12

目录

1.问题背景

2.安装模块

3.绘制柱状图的实现

4.对于图表的完善

5.重新思索


1.问题背景

我们想要通过这个用户的获得点赞的数量和她的粉丝数量的比值作为一个指标,我们想要绘制一个柱状图取值管的进行这个排名;

下面的这个是今天最后我们实现的终极效果,看看吧,是不是迫不及待了~~~

2.安装模块

pip install pyecharts==1.8.1

因为这个模块不是我们的内置模块,因此需要我们自己进行导入;

3.绘制柱状图的实现

# 从pyecharts.charts中 导入 Bar模块
from pyecharts.charts import Bar
# 创建一个柱状图Bar对象并赋值给变量bar
bar = Bar()
# 将10位博主的姓名存入变量名为'name'的列表中
name=["一起画笔记","我是课代表","菠萝冰和夏天","Jeannie花","Esther天",
      "爱草莓的小挺","栀缘","钢琴上的音乐","Mu123","师008号"]

# 按照博主姓名的顺序,依次将博主的粉丝数量存入变量名为'fans'的列表中
fans=[12.5,23.1,38.5,15.8,14.1,11.4,18.2,16.5,22.6,32]

# 按照博主姓名的顺序,依次将博主的点赞收藏量存入变量名为‘likes’的列表中
likes=[18.2,15.2,222.7,71.5,8.6,70.5,107.7,128.3,109,31.7]

# 计算点赞收藏量与粉丝量的比值
# 1、定义一个空列表ratioList,存储点赞收藏量与粉丝量的比值
ratioList = []
# 2、统计点赞收藏量列表长度,并赋值给length
length = len(likes)
# 3、将点赞收藏量列表中的值除以对应粉丝量列表中的值,
# 并使用round()函数取近似值并保留2位小数,存储到ratioList列表中
for i in range(length):
    ratio = round(likes[i]/fans[i],2)
    # 使用append函数向这个列表里面添加数据
    ratioList.append(ratio)

# 给柱状图添加x轴数据,数据内容是博主姓名列表:name
bar.add_xaxis(xaxis_data=name)

# 给柱状图添加y轴数据,数据内容是赞粉比列表:ratioList
# series_name是这个柱状图的图例的名字,不加上这个参数就会报错
bar.add_yaxis(series_name="赞粉比", y_axis=ratioList)

# TODO 绘制出这条柱状图,并保存到/Users/Yoyo/Desktop/中,文件名称为fans_likes.html
# 使用render函数对于这个柱状图进行保存,保存为png可能会损坏,我们可以保存为html格式
# bar.render(r"E:\zanfenbi.png")
bar.render(r"E:\zanfenbi.html")

绘制效果:

4.对于图表的完善

我们观察就可以直观的发现,这个图表没有标题,而且这个横坐标上面的名字显示的也不是很完全

我们下面通过全局配置项进行完善:

下面的这个代码就是在上面的基础上进行了三处的修改:

# 添加一个模块,用来进行这个全局配置

# 旋转这个x轴的角度

# 添加标题

# 导入options 模块并简写为opts
from pyecharts import options as opts
# 从pyecharts.charts中 导入 Bar模块
from pyecharts.charts import Bar
# 创建一个柱状图Bar对象并赋值给变量bar
bar = Bar()
# 将10位博主的姓名存入变量名为'name'的列表中
name=["一起画笔记","我是课代表","菠萝冰和夏天","Jeannie花",
      "Esther天","爱草莓的小挺","栀缘","钢琴上的音乐","Mu123","师008号"]

# 按照博主姓名的顺序,依次将博主的粉丝数量存入变量名为'fans'的列表中
fans=[12.5,23.1,38.5,15.8,14.1,11.4,18.2,16.5,22.6,32]

# 按照博主姓名的顺序,依次将博主的点赞收藏量存入变量名为‘likes’的列表中
likes=[18.2,15.2,222.7,71.5,8.6,70.5,107.7,128.3,109,31.7]

# 计算点赞收藏量与粉丝量的比值
# 1、定义一个空列表ratioList,存储点赞收藏量与粉丝量的比值
ratioList = []
# 2、统计点赞收藏量列表长度,并赋值给length
length = len(likes)
# 3、将点赞收藏量列表中的值除以对应粉丝量列表中的值,并使用round()函数取近似值并保留2位小数,存储到ratioList列表中
for i in range(length):
    ratio = round(likes[i]/fans[i],2)
    ratioList.append(ratio)

# 给柱状图添加x轴数据,数据内容是博主姓名列表:name
bar.add_xaxis(xaxis_data=name)

# 给柱状图添加y轴数据,数据内容是赞粉比列表:ratioList
bar.add_yaxis(series_name="赞粉比", y_axis=ratioList)

# 使用set_global_opts进行标题配置和x轴配置
# 初始化TitleOpts对象,设置标题名称为"候选博主粉丝与点赞的对比"
# 设置副标题名称为"筛选博主"
# 初始化一个AxisOpts对象,设置标签旋转45度
bar.set_global_opts(title_opts=opts.TitleOpts(title = "候选博主粉丝与点赞的对比",subtitle = "筛选博主"),
                            xaxis_opts=opts.AxisOpts(axislabel_opts={"rotate":45}))
#上面的这个函数调用实际上是一个优化之后的结果,如果两次调用这个函数,这个第一次调用的时候
# 添加的标题就会消失,因此这个只调用一次,但是这一次调用进行两个配置

# 绘制出这条柱状图,并保存到路径"/Users/Yoyo/Desktop/fans_likes.html"
bar.render(r"E:\quanjupeizhi.html")

进行图表的美化之后的效果:

5.重新思索

我们需要分别绘制出来每一个博主的点赞量的变化,这个我们想要使用一个看板实现切换效果,这个需要用到tab模块;

每一个用户这个绘制图形的最大值不同,我们需要统一,否则很容易直观上判断错误;

我想要说的和这个注释都在下面,自行学习喽:

# 从pyecharts.charts中导入Line和Tab
# 这个里面的tab就是去绘制这个切换的面板的
from pyecharts.charts import Line,Tab
# 从pyecharts中导入options模块并简写为opts
from pyecharts import options as opts
# 创建一个组件Tab对象,赋值给变量tab
tab = Tab()

# 近10篇笔记的点赞量数据存入列表likes中
likes1 =[71,429,150,2214,626,1597,773,10000,1947,2275]
likes2 =[299,720,97,995,1010,12000,862,2588,1015,8522]
likes3 =[113,102,619,3465,531,1426,921,3717,2598,526]
likes4 =[421,392,680,938,2013,493,1624,1204,4955,2021]
likes5 =[151,376,60,3785,277,46,325,3212,143,566]
likes6 =[479,8355,933,3610,4073,606,1824,568,7981,632]

# 将博主姓名存入列表name_list中
name_list = ["菠萝冰和夏天","Jeannie花","爱草莓的小挺","栀缘","钢琴上的音乐","Mu123"]
# 将博主10篇笔记的点赞量数据存入列表likes_list中
likes_list =[likes1,likes2,likes3,likes4,likes5,likes6]

# 将最近10篇笔记的名字存入列表并赋值给变量page
page = ["近10篇","近9篇","近8篇","近7篇","近6篇","近5篇","近4篇","近3篇","近2篇","近1篇"]

# 定义函数create_line(),获取博主名字name和点赞数likes,绘制折线图
def create_line(name,likes):

    # 创建折线图Line对象,并赋值给变量line,设置主题为"dark"
    # 这个theme就是一个颜色效果,有很多的类型,可以去官方文档了解
    line = Line(init_opts=opts.InitOpts(theme="dark"))

    # 给折线图添加x轴数据,数据内容是笔记名字:page
    line.add_xaxis(page)

    # 给折线图添加y轴数据,数据内容是点赞量列表:likes,图例名称为博主姓名:name,折线图样式为:平滑折线图
    line.add_yaxis(series_name=name, y_axis=likes,is_smooth=True)
                         

    # 用set_global_opts进行y轴配置,初始化一个AxisOpts对象,设置最大值为13000:
    # 这个地方的设置是因为如果有的数据量普遍偏小,我们没有办法通过这个高度进行判断
    #如果这个最大值是一样的,这个数据量小的就会特别低,我们可以治钢管的看到效果
    line.set_global_opts(yaxis_opts= opts.AxisOpts(max_ = 13000))

    # 返回折线图
    return line

# 定义一个计数器n,初始值为0
n = 0
# 循环name_list列表,依次将博主name提取出来
for name in name_list:
    # 将create_line()函数赋值给line,参数为name,和列表likes_list中第n项的值
    # 这个就是在绘制看板
    line = create_line(name, likes_list[n])
    # 使用tab.add()函数将折线图依次添加进看板中
    tab.add(line, name)
    # 计数器n加1
    n = n + 1

# 使用tab.render()展示折线图,并保存到/Users/Yoyo/中,文件名称为line.html
tab.render(r"E:\xia3.html")

最后看一眼效果:上面是可以进行切换的欧~~

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

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

相关文章

飞睿智能10km无人机WiFi中继图传模块,视界无界,高速传输画质高清不卡顿、抗干扰

在无人机技术日新月异的今天,我们时常被那些高空翱翔的“小眼睛”所震撼。它们不仅为我们带来了未有的视觉体验,更在诸多领域发挥着举足轻重的作用。然而,要让无人机真正发挥其潜力,一个稳定、高效的图传系统至关重要。今天&#…

vue2 动态组件

文章目录 实现思路:组件注册动态组件嵌入的位置动态的tabPanes动态组件 - listComponent实际嵌入的组件 - invoiceListComponent 实现思路: 组件注册 组件的地址存储在表中,在xxx_components表中配置组件url components_key:组…

2024年最新股指期货交易手续费标准是多少?

股指期货交易手续费是指投资者在进行股指期货买卖时需要支付的费用,主要包括开仓手续费和平仓手续费。这些费用是交易所和期货公司为了维持市场运行和提供服务而收取的。 一、沪深300、上证50、中证500、中证1000股指期货手续费 日内交易:只要你在交易…

计算机中的「null」怎么读?

今天咱们来聊一个让无数程序员纠结的问题:“null”这个词到底该怎么读? 在开始讨论这个问题之前,我觉得有必要先带大家回忆一下我们曾经踩过的那些发音雷区。 尤其是那些英文术语,真的是一个坑接一个。比如这些常见的发音错误&am…

常见DDoS攻击之零日漏洞Zero-day Attacks

目录 一、什么是零日漏洞Zero-day Attacks 二、零日漏洞是如何转化为零日攻击的 三、常见的零日攻击类型 四、为什么零日攻击很危险 五、著名的零日攻击事件 六、如何降低零日攻击的风险 七、DDoS攻击防御解决方案(定制化) 7.1 产品优势 7.2 产品…

Vue - 详细介绍wow.js滚动触发动画组件(Vue2 Vue3)

Vue - 详细介绍wow.js滚动触发动画组件(Vue2 & Vue3) 在日常网页中,我们难免会用到CSS动画来对某些元素进行显示隐藏,在wowjs中可根据浏览器滚动来触发对应的CSS动画,并且可设置多种animate动画类型、动画持续时间…

速卖通自养号测评:安全高效提升产品销量的秘诀

速卖通自养号测评是跨境电商卖家为了提升产品销量、评价数量及排名而采取的一种策略。以下是对速卖通自养号测评的详细解析: 一、自养号测评的定义 自养号测评,顾名思义,是指卖家自行培养并管理买家账号,通过模拟真实买家的购物…

重新认识一下,从BIO到NIO,再到AIO,响应式编程

Netty 的高性能架构,是基于一个网络编程设计模式 Reactor 进行设计的。现在,大多数与 I/O 相关的组件,都会使用 Reactor 模型,比如 Tomcat、Redis、Nginx 等,可见 Reactor 应用的广泛性。 Reactor 是 NIO 的基础。为什…

WordPress中最佳免费WooCommerce主题推荐:专家级指南

在电商领域,每个创业者的梦想是拥有一个既功能强大又美观的在线商店。对于已经具备一定建站经验的专家级用户来说,重点是选择一款功能强大且灵活性高的WooCommerce主题。在这篇文章中,我将为大家推荐几款适合专家级用户的免费WooCommerce主题…

javaer选手快速入门grpc

本文前置内容 需要学过java微服务开发,至少知道使用过openfeign和dubbo等rpc微服务组件的相关内容 相信已经学习到微服务开发的对grpc或多或少都有了解,高效的性能和protobuf这样轻量序列化的方式 无论是go开发必学还是java 使用dubbo或者其他深入也是需要了解的 相关概念 Pro…

使用js代码模拟React页面中input文本框输入

遇到的问题: 使用js代码模拟input框中输入指定的字符串,在浏览器调试页面能看到输入框的文字已经变成我需要的文字,但是只要我点击输入框,或者页面上的其他输入框,输入框的文字就清空了。 解决过程和方法: …

火语言RPA流程组件介绍--睡眠等待

🚩【组件功能】:休眠等待指定时间后再恢复执行 阻塞当前流程继续向下运行,暂停等待指定时间,一般当上一组件操作需要缓冲时间或完成太快需要休眠观测时使用此组件。 配置预览 配置说明 延迟时间 支持T或# 输入仅支持整型 阻塞…

[Linux#44][线程] CP模型2.0 | 信号量接口 | 基于环形队列

目录 1.回忆 Task.hpp 1. #pragma once 2. 头文件和命名空间 3. 类 CallTask 4. 操作符字符串 5. 回调函数 mymath 阻塞队列 BlockQueue 的实现 BlockQueue 生产者和消费者线程 生产者productor 消费者 consumer 主函数 main 代码整体说明 2. 信号量 2.1 回忆&…

简化登录流程,助力应用建立用户体系

随着智能手机和移动应用的普及,用户需要在不同的应用中注册和登录账号,传统的账号注册和登录流程需要用户输入用户名和密码,这不仅繁琐而且容易造成用户流失。 华为账号服务(Account Kit)提供简单、快速、安全的登录功…

Raft分区产生的脏读问题

Raft分区产生的脏读问题 前言网络分区情况1 4和5分到一个分区,即当前leader依然在多数分区情况2 1和2分到一个分区,即当前leader在少数分区 脏读问题的解决官方解答其他论文 参考链接 前言 昨天面试阿里云被问到了这个问题,在此记录一下。 …

终于有人将Transformer可视化了!

都 2024 年,还有人不了解 Transformer 工作原理吗?快来试一试这个交互式工具吧。 2017 年,谷歌在论文《Attention is all you need》中提出了 Transformer,成为了深度学习领域的重大突破。该论文的引用数已经将近 13 万&#xff…

第二证券:股票可以亏损本金吗?股票会不会亏成负?

炒股是存在赔本本金的或许的,当你卖出股票的价格小于买入股票的价格,那就是赔本的。 实践上,还因为不管是买入股票仍是卖出股票都会收取股票生意手续费,所以假设卖出股票价格等于买入股价,或许只上涨了一点点&#xf…

开放式耳机怎么选?南卡、漫步者、Oladance OWS PRO四款耳机无广深度测评!

最近这段时间,我发现很多的小伙伴在我已经怎么选择开放式耳机,哪一款比较推荐的,如今市面上出现了很多不同的开放式耳机品牌,在购买的时候大多数人都没有非常明确的目标,主要就是因为大多数人对开放式耳机的了解程度不…

C#实现数据采集系统-多设备采集

系统功能升级-多设备采集 数据采集系统在网络环境下,性能足够,可以实现1对多采集,需要支持多个设备进行同时采集功能,现在就开发多设备采集功能 修改多设备配置 设备配置 将DeviceLink 改成List集合的DeviceLinks删掉Points&a…

【知识图谱】2.知识抽取与知识存储

目录 一、知识抽取 1、实体命名识别(Name Entity Recognition) 2、关系抽取(Relation Extraction) 3、实体统一(Entity Resolution) 4、指代消解(Coreference Resolution&#xff0…