今天给大家准备的是动态更新的动态图,上次在b站见到了,便想着来做,正好又在猪哥的公号看到了这个知识点,就马不停蹄的我就开始练习,下面是效果图。
材料: python3
matplotlib
数据获取地址:http://piaofang.maoyan.com/dashboard?movieId=1277644猫眼电影票房。


首先进行数据的获取,接口很容易找,看到点击下一天并不会出现网址我们就可以知道是动态获取的网页。找到json接口后我们对它进行所需数据的获取便可。

之后因为我们需要的是多天的票房数据,所以我们也需要对url地址进行遍历,最后再将获取的数据保存下来以便后续处理。
获取数据的代码如下

url_lst = []
for i in range(19):url = 'http://piaofang.maoyan.com/second-box?beginDate='+str(int(20191201+i))url_lst.append(url)
def use_url(url,time):headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',}res = requests.get(url=url,headers=headers)res.encoding='utf-8'data = res.json()dict = []for i in data['data']['list']:dic = {}dic['电影']=i['movieName']dic['票房']=i['boxInfo']dic['日期'] = timedict.append(dic)return dict
data_lst = []
time = 20191201
for j in url_lst:data_lst.extend(use_url(j,time))time+=1
df_result = pd.DataFrame(data_lst)
print(df_result)
df_result.to_csv(r'票房.csv',encoding='utf-8')#导入到excel文件

数据获取好后我们就可以开始准备画图处理啦,我这里选取了几个电影做例子。

df = pd.read_csv('E:\pythonlian1\票房.csv',encoding="gbk")
df1=df[(df['日期']>=20191205)&(df['电影']=='冰雪奇缘2')|(df['电影']=='误杀')|(df['电影']=='冰雪奇缘2')|(df['电影']=='中国机长')|(df['电影']=='勇敢者游戏2:再战巅峰')]
print(df1)


然后准备好各行的颜色分配

colors = dict(zip(dff['电影'],['#adb0ff', '#ffb3ff', '#90d595', '#e48381', '#cccc4d','#aafbff', '#f7bb5f', '#eafb50', '#ffb3e6', '#4169e1']
))
print(colors)

我们直接先画出静态的图表
代码部分也只是照猫画虎,去除边框加上线条,设置字体位置与大小,再配上颜色

fig, ax = plt.subplots(figsize=(15, 8))
def draw_barchart(year):dff = df1[df1['日期'].eq(year)].sort_values(by='票房', ascending=True).tail(10)ax.clear()ax.barh(dff['电影'], dff['票房'], color=[colors[x] for x in dff['电影']])for i, (value, name) in enumerate(zip(dff['票房'], dff['电影'])):ax.text(value, i,     name,           size=14, weight=600, ha='right', va='bottom')ax.text(value, i,     f'{value:,.0f}',  size=14, ha='left',  va='center')ax.text(1, 0.4, year, transform=ax.transAxes, color='#777777', size=46, ha='right', weight=800)ax.text(0, 1.06, '票房数量', transform=ax.transAxes, size=12, color='#777777')ax.xaxis.set_ticks_position('top')ax.set_yticks([])ax.margins(0, 0.01)ax.grid(which='major', axis='x', linestyle='-')#线条布置ax.set_axisbelow(True)ax.text(0, 1.12, '票房变化',transform=ax.transAxes, size=24, weight=600, ha='left')plt.box(False)   #是否带边框
draw_barchart(20191219)

对于动图的绘制,我们可以使用matplotlib中的animation,配置几个参数传入之前静态图的函数中就可以了

import matplotlib.animation as animation
from IPython.display import HTML
fig, ax = plt.subplots(figsize=(15, 8))
animator = animation.FuncAnimation(fig, draw_barchart, frames=range(20191202, 20191219))
HTML(animator.to_jshtml())

大功告成,成品就会同开始的那幅图一样,它有好几个参数可以设置,比如这里没添加的帧数之类,可参考https://www.cnblogs.com/zhouzhe-blog/p/9614360.html
大家可以看看。

绘制自动电影票房变化图制作b站同款自动动态更新柱状图相关推荐

  1. html相框自动生成功能,网页制作HTML5拖放API实现自动生成相框功能

    实现功能: 将桌面图片拖入指定地方,生成相框和相关信息. 相框需要自己配置,设置为背景,在CSS中设置. 效果如图: html部分: H5拖放API之图片相框效果 > 请将图片拖放至此处 CSS ...

  2. 【Methodot低代码教程系列03】——零代码十分钟制作电影票房管理后台

    Methodot低代码教程系列第三课来啦! 本期课程详细视频戳这里>https://www.bilibili.com/video/BV1644y177Yy?spm_id_from=333.999 ...

  3. 【StarOS低代码教程系列02】——十分钟制作电影票房管理后台

    说明 StarOS,一站式云原生在线开发平台,免运维的容器集群,开箱即用的研发设施All in one 的云原生应用开发体验. StarOS,等你来免费体验>> StarOS低代码教程系列 ...

  4. Matplotlib 绘制柱状图 - 电影票房

    运行环境 : python 3.6.0  用 Matplotlib 的 bar 和 barh 方法绘制散点图 , 绘制票房统计 , 数据来源于 http://58921.com/alltime/201 ...

  5. Python学习记录 - matplotlib绘制电影票房条形图

    问题1: 假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据? 数据来源:http://58921.com/alltime/2017 数据 ...

  6. 利用matplotlib绘制条形图,直观呈现2019年电影票房数据

    效果图: ''' 以2019年内地电影票房总排行榜电影名和总票房为例,做一个横版直方图 ''' import matplotlib.pyplot as plt #from matplotlib.fon ...

  7. 揭秘《铃芽之旅》动画电影幕后特效制作细节

    最近被爆火的<铃芽之旅>刷屏了,整体来说还是备受好评的,整体电影的画质很棒,剧情也很不错,新海诚这次沉淀三年带来的作品<铃芽之旅>还是挺值得一看的,影片感人,女主一往无前,一路 ...

  8. 电影票房预测-kaggle项目Python项目

    研究问题:如何根据电影上映前的一些信息来预测出该电影的票房. 数据来源 数据主要是电影数据库中的 7000 多部过去电影的元数据.提供的数据信息包括演员,工作人员,情节关键词,预算,海报,发布日期,语 ...

  9. 互联网晚报 | 10月11日 星期一 | 联想回应终止科创板IPO;万达广场小程序用户量破亿;2021年全国电影票房破400亿元...

    ‍ ‍今日看点 ✦ 淘特宣布上线为期34天的"特省节",将发放至少10亿元"请客"大红包 ✦ 联想回应终止科创板IPO:财务信息可能过期失效,审慎考虑资本市场情 ...

最新文章

  1. c语言对10求余不为7,【PTA | 基础编程题目集】7-12 两个数的简单计算器 (10分)
  2. 13个初中级Python程序员练习的项目开发实战
  3. 换主板会影响oracle数据库吗,nas瞎折腾 篇一:J3455更换h310+8700t es折腾作业
  4. 桥接路由器总是掉线_光猫集成了路由功能,路由器的路由功能会多余吗?
  5. linux rz sz 安装_Windows与Linux文件传输之lrzsz工具
  6. OpenShift 4 - 容器应用备份和恢复
  7. php strcmp 比较汉字,php中strcmp() 比较中文是按照什么比较的
  8. Centos 5.6 安装subversion总结
  9. 同学,这些事比考证重要的多
  10. (二)java版电子商务spring cloud分布式微服务b2b2c社交电商-Spring Boot配置文件详解...
  11. 菜鸟AJAX 教程和JSON
  12. 正则表达式lookahead and lookbehind zero-length assertions
  13. 梅西凑齐七个金球成功召唤神龙
  14. a73*2+a53*2指的是什么_考验你脑细胞的时候到了!杨花落尽子规啼,闻道龙标过五溪中的子规指的是什么?|考验|脑细胞-360GAME...
  15. 使用VSLinux插件开发和调试
  16. 文件File 的使用
  17. nodejs和js之间有什么区别?
  18. 为什么在校大学生都要考计算机证书?要考几个证?
  19. 深度学习-人体姿态估计
  20. 自学Python第十四天- 一些有用的模块:urllib、requests 网络编程基础,向爬虫靠拢

热门文章

  1. Java 类实例化顺序
  2. 各种手机处理器排行榜_手机cpu排行榜介绍
  3. Bert的pooler_output是什么?
  4. Webpack5之CSS3自动补齐前缀
  5. 四字节数组转为float
  6. 广东首出网络科技有限公司
  7. 站长在线Python教程精讲:在Python函数中的局部变量详解
  8. 一个可以查看alexa排名历史的网站
  9. 离子液体 [C6MIm]BF4/cas:244193-50-8/1-己基-3-甲基咪唑四氟硼酸盐黄色液体
  10. 2020-10 补丁日: 微软多个产品高危漏洞安全风险通告