手把手教你做一个python+matplotlib的炫酷的数据可视化动图(代码片段)

易三一世 易三一世     2022-12-24     450

关键词:

1.效果图

 

2.注意:

上述资料是虚拟的,为了学习制作动图,构建的。

仅供学习,

不是真实数据,请别误传。

当自己需要对真实数据进行可视化时,可进行适当修改。

 

3.代码:

#第1步:导出模块,固定
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker 
import matplotlib.animation as animation

#第2步:中文字体显示设置1,导出通用字体设置,可调整
from matplotlib import font_manager 
#中文字体显示设置2,引出字体模块和位置
#注意此处字体size大小不设置就是默认,设置或不设置后会发现所有文字或汉字大小都固定在my_font,下面单独设size无效了
my_font = font_manager.FontProperties(fname="/usr/share/fonts/truetype/noto/simsun.ttf",size=14)
#中文字体显示设置,第3步,增加u和fontproperties=my_font,加不加u或r均可以

#第3步:导入数据,可调整,文件名和目录可调整
#将数据下载下来放在指定默认的目录和文件夹下
df = pd.read_csv(\'4.csv\', 
                 usecols=[\'name\', \'group\', \'year\', \'value\'])
#定义全局变量
current_year = 2018

#第4步:定义dff和图片大小设置,可固定
dff=() #定义元组
fig, ax = plt.subplots(figsize=(15, 8))

#第5步:定义7组数据的颜色,group可调整,但颜色值可调整或者不调整
colors = dict(zip(
    [\'安徽\', \'浙江\', \'江西\', \'上海\',\'深圳\', \'北京\', \'重庆\'],
    [\'#adb0ff\', \'#ffb3ff\', \'#90d595\', \'#e48381\',\'#aafbff\', \'#f7bb5f\', \'#eafb50\']))

#第6步:从数据中取值,可固定
group_lk = df.set_index(\'name\')[\'group\'].to_dict()

#第7步:画图关键设置,可固定
def draw_barchart(year):
    dff = df[df[\'year\'].eq(year)].sort_values(by=\'value\', ascending=True).tail(10)
    ax.clear() #每次清空、刷新
    ax.barh(dff[\'name\'], dff[\'value\'], color=[colors[group_lk[x]] for x in dff[\'name\']])
    dx = dff[\'value\'].max() / 200
    
    for i, (value, name) in enumerate(zip(dff[\'value\'], dff[\'name\'])):
        #在text里加fontproperties=my_font,注意有my_font的地方size存在的意义不大,目前bug
        ax.text(value-dx, i,     name,           size=20,fontproperties=my_font, 
        weight=600, ha=\'right\', va=\'bottom\')
        ax.text(value-dx, i-.25, group_lk[name], size=10, fontproperties=my_font,
        color=\'#444444\', ha=\'right\', va=\'baseline\')
        ax.text(value+dx, i,     f\'value:,.0f\',  size=14, ha=\'left\',  va=\'center\')
    #显示文字,x=0,y=1.10,坐标,ha=水平对准=水平线平放
    #ax.text()格式=(x,y,string,fontsize=15,verticalalignment="top",horizontalalignment="right")
    #string=字符串=\'文字内容\'

    #汉字内容可调整,其他不动
    ax.text(0, 1.10, \'1968 ~ 2018年我国各部分省和地区GDP变化\',
            transform=ax.transAxes, size=18, fontproperties=my_font, 
            weight=600, ha=\'left\') #文字标题,第1层
    ax.text(0, 1.04, \'GDP (万亿)\', transform=ax.transAxes, size=12, 
    fontproperties=my_font, color=\'#777777\') #显示文字,第2层
    ax.text(1, 0.4, year, transform=ax.transAxes, color=\'#777777\', size=46, 
    ha=\'right\', weight=800) #右边固定显示动图年份
    #va=verticalalignment="top",垂直对准
    #ha=horizontalalignment="right",alignment=对准,水平对准
    ax.xaxis.set_ticks_position(\'top\')  #x轴在上面

    ax.set_yticks([]) #默认是显示y轴的名称,左边垂直的城市名字,设为[]就是不显示
    ax.margins(0, 0.01) #不设置就是默认值,缩放比例(0,0.05)
    ax.grid(which=\'major\', axis=\'x\', linestyle=\'--\') #垂直线,布局和格式
    ax.set_axisbelow(True)  #默认是true的
    #默认是True,False之后不显示黑色线框
    plt.box(False) 
#以animator形式展现动画
animator = animation.FuncAnimation(fig, draw_barchart, frames=range(1968, 2019)) 

plt.show() #以plt的形式展现图片
View Code

 

javascript应用——手把手教你做一个页面化猜数字游戏

一听到猜数字游戏,想必大家都不太陌生吧?是的没错,很多人都用C语言或者Java写过猜数字游戏小程序,博主也不例外,之前写过C语言版本的猜数字游戏,感兴趣的同学可以看看C语言版本猜数字游戏。... 查看详情

❤️手把手教你做一个爱情保温软件❤️——python封装.exe文件+爬虫(每日情话系列)(代码片段)

陪伴是最长情的告白❤️导读❤️可执行文件的准备阶段——爬虫❤️源码❤️封装成可执行文件❤️生成图标❤️可能会产生的报错❤️我的文件分享❤️特别推荐❤️导读何为爱?很多人说在中国爱是建立在责任的基础... 查看详情

手把手教你做蓝牙小车

第1节选择Arduino开发板1.1Arduino是什么对Arduino,官方有一堆解释。作为一个软件程序猿,在我眼里,Arduino是学习“可怕硬件”的一个便捷通道。它把复杂的硬件名称,属性给我们隐藏起来,只需要一些简单的软件知识,就可以学... 查看详情

手把手教你做一个缓存工具(代码片段)

日常开发中,某些数据接口即使优化到极致,都难免还会存在计算量巨大导致响应过慢,多数情况单独做一个统计表用于存放这些处理后的数据用于读取,或者接入redis/memcache存数据,就是说单次响应本身是可以接受较慢一些的... 查看详情

手把手教你做一款支付宝收款音箱(代码片段)

前言Python语言的是一款非常容易使用的解释性语言,它的主要特点如下:易学易用;可扩展可移植;丰富的三方库。正是由于以上这些特点,使得Python在一些逻辑简单,功能复杂的场景应用非常广泛。近几年,随... 查看详情

手把手教你做一个电子相册(代码片段)

1、概述首先介绍下什么是HaaS:2020年9月17日,在云栖大会上阿里云IoT团队正式发布了HaaS(HardwareasaServie)。HaaS是一种物联网设备云端一体开发框架,它的目的是通过数量收敛的硬件积木(比如主控板:... 查看详情

手把手教你做一个网页(代码片段)

摘要:搞嵌入式的要学习一点前端吗?那么前端是什么?是网页是网站吗?是也不全是。前端技术一般分为前端设计和前端开发,前端设计一般可以理解为网站的视觉设计,前端开发则是网站的前台代码实... 查看详情

手把手教你做一个网页(代码片段)

摘要:搞嵌入式的要学习一点前端吗?那么前端是什么?是网页是网站吗?是也不全是。前端技术一般分为前端设计和前端开发,前端设计一般可以理解为网站的视觉设计,前端开发则是网站的前台代码实... 查看详情

手把手教你做一个电子胸牌(代码片段)

关注+星标公众号,不错过精彩内容来源 | RT-Thread关注RT-Thread的同学肯定知道,RT-Thread为了向众多开发者展示RT-Thread的最新开发和生态建设成果,每年都会举办一场开发者大会(简称:RDC),在2020年度的开发... 查看详情

手把手教你做一个相机红外遥控器

ML-L3是用于尼康部分型号相机的无线红外遥控器,可以通过红外方式来控制快门的释放,支持B门拍摄。官方售价100RMB左右,山寨版售价10RMB左右。虽然也能实现基本的遥控功能,但是功能还是比较单一,如不能... 查看详情

axure-手把手教你做汉化

 ?我们默认下载的AXURE是英文版的,对于英文能力不足或者不习惯英文界面的,那必须使用汉化手段,网上也有很多朋友已经为大家做好了汉化文件,这里介绍一下如何自己做AXURE的汉化。如何开始汉化如何开始汉化,只需要... 查看详情

手把手教你做一个吸引人的购物网站

购物网站盈利能力相信很多用户都是有目共睹的,因此不少的中小企业对购物网站的建设也是趋之若鹜,怎么企业设计购物网站有什么方法能够为购物网站提高人气呢?下面看看凡科网站建设带来的一些分析。要对用户的跟随心... 查看详情

手把手教你做一个安卓点餐系统(代码片段)

最近有小伙伴要学习安卓,今天给大家展示一个安卓系统的开发,希望能帮到你学习!传统的点餐方式有:1)手工点餐模式。在这种模式下,流程简单,店员很快知道要点什么,但随着点餐人数多&... 查看详情

手把手教你做安豆计算器-界面美化

第5节界面美化这一节,我们将对粗糙的计算器界面进行美化,最后让它的效果如下,5.1整体背景色给整个背景调整一个背景颜色,让它变得美观。在布局文件activity_main.xml中,给整个界面增加一个背景颜色#FF4B5459,对界面的父布... 查看详情

☀️手把手教你python+matplotlib模拟锁相放大器的原理以及工作过程☀️《❤️记得收藏❤️》(代码片段)

☀️手把手教你Python+matplotlib模拟锁相放大器的原理以及工作过程☀️《❤️记得收藏❤️》目录🏳️‍🌈开讲啦!!!!🏳️‍🌈苏州程序大白🏳️‍🌈🌟博主介绍前言python实... 查看详情

手把手教你做项目web框架flask篇——基础用法详解(代码片段)

目录导读为什么用flask安装flask启动flaskflask里name的用处转换器和变量规则重定向设置错误页面json数据读取cookie和session对cookie的获取和删除session操作request的使用蓝图开发必备视图资源分享导读今天接着为暑假的项目做准备,... 查看详情

手把手教你做一个非常酷的pov显示器(附源码)(代码片段)

关注+星标公众号,不错过精彩内容来源|DF创客社区作者|AmalShajan今天为大家分享一个DIY产品,如下:前两天天我在浏览购物网站的时候,被一个购物清单吸引住了,5个ATtiny13单片机售价1.5美元。你敢相信... 查看详情

手把手教你做项目多线程篇——基础知识详解(代码片段)

...特性锁互斥锁信号量送点资源导读随着暑假的推进,手把手教你做项目前边的准备也差不多了后续的项目也渐渐要开始了但是正式发出来可能要等一段时间前后端都是我一个人确实有点费力(毕竟我也是菜鸡),... 查看详情