数据源

数据
过程:
1.将数据进行持久化存储
先使用pandas的read_csv函数从网页端直接读取数据,并筛选部分数据

url = 'https://gist.githubusercontent.com/johnburnmurdoch/4199dbe55095c3e13de8d5b2e5e5307a/raw/fa018b25c24b7b5f47fd0568937ff6c04e384786/city_populations'
df = pd.read_csv(url, usecols=['name', 'group', 'year', 'value'])

得到name,group,year,value数据后进行持久化存储避免重复读取网页端数据

df.to_csv('data.csv')

2.具体表格数据处理:

df.head()
import random
color1=['#BBFFFF', '#FAF0E6', '#FFFF00', '#7CCD7C','#8470FF', '#87CEEB', '#C1FFC1','SlateBlue','Cyan','#C0FF3E','#00EEEE','#FFAEB9','#FFE4E1','#54FF9F','RoyalBlue','Moccasin','#00FF7F','#00FF00','#FFC1C1','#00F5FF','#9AFF9A','#8470FF']
def randomcolor():return random.choice(color1)
#对地区列表进行去重,分类;
# 因为后面区域个数 要与颜色个数保持一致,这里用了len函数;
color_list =[]
for i in range(df['name'].size):str_1 = randomcolor()color_list.append(str_1)str_1 = randomcolor()
area_list_1 = list(df['name'])#Series
colors =dict(zip(area_list_1,color_list))
group_lk = df.set_index('name')['group'].to_dict()#每个城市对应的州做成字典形式
# 用plt加理图表,figsize表示图标长宽,ax表示标签
fig, ax = plt.subplots(figsize=(15, 8))#设置图表

3.画表格线:

def draw_barchart(current_year):# dff对year==current_year的行,以value从升序方式排序,取后十名也就是最大值;dff = df[df['year'].eq(current_year)].sort_values(by='value', ascending=True).tail(16)# 所有坐标、标签清除ax.clear()# 显示颜色、城市名字ax.barh(dff['name'], dff['value'], color=[colors[x] for x in dff['name']])dx = dff['value'].max() / 200for i, (value, name) in enumerate(zip(dff['value'], dff['name'])):#城市名ax.text(value - dx, i, name, size=14, weight=600, ha='right', va='bottom')#标签开始位置,文本,文本字体大小和字体位置(如左上右上)# 城市所在州ax.text(value - dx, i - .25, group_lk[name], size=10, color='#444444', ha='right', va='baseline')#数据ax.text(value + dx, i, int(value), size=14, ha='left', va='center')ax.text(1, 0.4, current_year, transform=ax.transAxes, color='#777777', size=46, ha='right', weight=800)#transform设置形式,ax.transAxes为轴标签ax.text(0, 1.06, '人口数量 (/千人)', transform=ax.transAxes, size=12, color='#777777')# set_major_formatter表示刻度尺格式;ax.xaxis.set_major_formatter(ticker.StrMethodFormatter('{x:,.0f}'))ax.xaxis.set_ticks_position('top')ax.tick_params(axis='x', colors='#777777', labelsize=12)ax.set_yticks([])# margins表示自动缩放余额;ax.margins(0, 0.01)# 设置后面的网格ax.grid(which='major', axis='x', linestyle='-')# 刻度线和网格线是在图标上方还是下方,True为下方ax.set_axisbelow(True)ax.text(0, 1.10, '1900 - 2020 年世界城市人口数量及排名',transform=ax.transAxes, size=18, fontproperties='SimSun',weight=600, ha='left')ax.text(1, 0, '17195190', transform=ax.transAxes, color='#777777', ha='right',bbox=dict(facecolor='white', alpha=0.8, edgecolor='white'))plt.box(False)#取消图表外边框

4.使用funcanimation制作动画

#单独绘制2020年最后一年各城市人口情况
draw_barchart(2020)
fig, ax = plt.subplots(figsize=(15, 8))
animator = animation.FuncAnimation(fig, draw_barchart, frames=range(1900, 2021),interval=80,repeat=False)#选择数据源中的1900-2020年的数据,帧率80ms,取消循环

5.使用pygame添加音效并展示

import pygame
from os import environ
import time
environ['PYGAME_HIDE_SUPPORT_PROMPT'] = '1'
pygame.mixer.init()
url = r"C:\.....mp3"
pygame.mixer.music.load(url)
pygame.mixer.music.play(-1, 0)
plt.show()
time.sleep(20)
pygame.mixer.music.stop()

注意:由于动画特殊性,需要在命令行界面运行才能动态展示,否则为静态图。

补充问题:
出现matplotlib中文乱码怎么办?

使用matplotlib做动态排名图相关推荐

  1. Python+Matplotlib绘制动态爱心图

    函数FuncAnimation(fig,func,frames,init_func,interval,blit)是绘制动图的主要函数,其参数如下: a.fig 绘制动图的画布名称 b.func自定义动 ...

  2. 利用Python制作动态排名图

         作者:刘早起早起      来源:早起Python 大家好,今天我们要讲的是如何使用Pyecharts制作动态排名变化图???? 制作这样的一个动态图使用到的是Pyecharts中的Time ...

  3. python做动态折线图_python matplotlib折线图样式实现过程

    python matplotlib 同时画箱线图和折线图的问题 python3 matplotlib画两个折线图,X轴相同,Y轴生...你的memo和cpui里面是字符串,不是数字 将memo.app ...

  4. 动态文字闪图怎么做?手把手教你在线做动态闪图

    想要做炫酷的动态文字闪图,又不会使用专业的做图软件时,应该怎么操作呢?很简单,给大家分享一款在线gif图片制作(https://www.gif.cn/)工具-[GIF中文网],只需要打开浏览器上传jp ...

  5. python做动态折线图_Python数据可视化 pyecharts实现各种统计图表过程详解

    1.pyecharts介绍 Echarts是一款由百度公司开发的开源数据可视化JS库,pyecharts是一款使用python调用echarts生成数据可视化的类库,可实现柱状图,折线图,饼状图,地图 ...

  6. 【Python-3.5】matplotlib做简单折线图

    在matplotlib中使用plot()函数可以做出简单折线图,预期效果如下: 代码如下: # 导入pyplot模块 import matplotlib.pyplot as plt# 输入横纵坐标数据 ...

  7. 用python画动态三维轨迹_Python学习(一) —— matplotlib绘制三维轨迹图

    在研究SLAM时常常需要对其输出的位姿进行复现以检测算法效果,在ubuntu系统中使用Python可以很好的完成相关的工作. 一. Ubuntu下Python的使用 在Ubuntu下使用Python有 ...

  8. 用python 画炫酷的图并讲解-超炫酷动态排序图、视频,我都帮你用Python实现了...

    先看一下最终效果,这是一张Python生成的GIF,还可以输出MP4格式的视频,到底怎么做的?且听我娓娓道来--数据集.代码.详细做法全部讲清楚. 数据集获取方式 大家可以去国家统计局的网站,搜索想要 ...

  9. Matplotlib数据动态可视化

    文章目录 1.效果预览 2.数据获取 3.数据预处理 4.matplotlib动态可视化 4.1.朴实无华的条形图 4.2.有点还行的条形图 4.3.会动的条形图 先把上面作图代码封装成函数 anim ...

最新文章

  1. 夏日里的激情——FE鹅和鸭农庄行
  2. 如何用Java类配置Spring MVC(不通过web.xml和XML方式)
  3. Xamarin 2017.10.9更新
  4. Scala学习 -- 基础语法
  5. 深入理解RMQ LCA
  6. ML之NB:基于NB朴素贝叶斯算法训练20类新闻文本数据集进行多分类预测
  7. 这谁写的技术文档?我想锤死他...
  8. python将html存为pdf_使用Python将HTML转成PDF
  9. 案例 github_github 项目搜索技巧-让你更高效精准地搜索项目
  10. 使用poll实现的io多路复用服务端和客户端
  11. 大龄程序员想转产品经理?3本书给你最靠谱的进阶攻略
  12. java变量自增题的分解08251944
  13. python 通用数据库类型_Python开发基础之Python常用的数据类型
  14. ppt生成器_#PPT素材神器#在线卡通头像生成器: avataaars generator
  15. color ui的使用
  16. android打印机字体大小,打印自定义文档  |  Android 开发者  |  Android Developers
  17. DIV+CSS布局-PxCook工具的简单使用
  18. 医疗项目(HIS)业务简单介绍
  19. 荣耀“打倒华为”第一机
  20. CSDN文章自动展开全文无需登录插件(仅限Chrome)!

热门文章

  1. 3.type关键字.rs
  2. GitLab 自动触发 Jenkins 构建
  3. PyCairo 中的变换
  4. 面试官问,为什么建议MySQL列属性尽量用 NOT NULL ?
  5. 干趴面试官系列 | 请你简述一下Kafka中的分区分配
  6. 旧金山站线上峰会24h倒数
  7. 【线上分享】云原生时代,华为云音视频质量监控与优化实践
  8. 视频直播:实时数据可视化分析
  9. 首届“开悟AI+游戏高校大赛”启动
  10. 腾讯云助力中国信息通信研究院研发运维标准化体系建设