当前位置: 首页 > news >正文

网站设计建设濮阳网站建设 公司名字

网站设计建设,濮阳网站建设 公司名字,科技vi设计,久久建筑网 66kv架空线路设计图纸大家好#xff0c;我是小F#xff5e;说起动态条形图#xff0c;小F之前推荐过两个Python库#xff0c;比如「Bar Chart Race」、「Pandas_Alive」#xff0c;都可以实现。今天就给大家再介绍一个新的Python库「pynimate」#xff0c;一样可以制作动态条形图#xff0c;…大家好我是小F说起动态条形图小F之前推荐过两个Python库比如「Bar Chart Race」、「Pandas_Alive」都可以实现。今天就给大家再介绍一个新的Python库「pynimate」一样可以制作动态条形图而且样式更好看。GitHub地址https://github.com/julkaar9/pynimate文档地址https://julkaar9.github.io/pynimate/首先使用pip安装这个库注意Python版本要大于等于3.9。 # 安装pynimatepip install pynimate -i https://pypi.tuna.tsinghua.edu.cn/simple其中pynimate使用pandas数据帧格式时间列设置为索引index。time, col1, col2, col3 2012 1 2 1 2013 1 1 2 2014 2 1.5 3 2015 2.5 2 3.5然后来看两个官方示例。第一个示例比较简单代码如下。from matplotlib import pyplot as plt import pandas as pd import pynimate as nim# 数据格式索引 df pd.DataFrame({time: [1960-01-01, 1961-01-01, 1962-01-01],Afghanistan: [1, 2, 3],Angola: [2, 3, 4],Albania: [1, 2, 5],USA: [5, 3, 4],Argentina: [1, 4, 5],} ).set_index(time)# Canvas类是动画的基础 cnv nim.Canvas() # 使用Barplot模块创建一个动态条形图, 插值频率为2天 bar nim.Barplot(df, %Y-%m-%d, 2d) # 使用了回调函数, 返回以月、年为单位格式化的datetime bar.set_time(callbacklambda i, datafier: datafier.data.index[i].year) # 将条形图添加到画布中 cnv.add_plot(bar) cnv.animate() plt.show()Canvas类是动画的基础它会处理matplotlib图、子图以及创建和保存动画。Barplot模块创建动态条形图有三个必传参数data、time_format、ip_freq。分别为数据、时间格式、插值频率(控制刷新频率)。效果如下就是一个简单的动态条形图。我们还可以将结果保存为GIF或者是mp4其中mp4需要安装ffmpeg。# 保存gif, 1秒24帧 cnv.save(file, 24, gif)# 电脑安装好ffmpeg后, 安装Python库 pip install ffmpeg-python# 保存mp4, 1秒24帧 cnv.save(file, 24 ,mp4)第二个示例相对复杂一些可以自定义参数样式设置成深色模式。from matplotlib import pyplot as plt import numpy as np import pandas as pd import pynimate as nim# 更新条形图 def post_update(ax, i, datafier, bar_attr):ax.spines[top].set_visible(False)ax.spines[right].set_visible(False)ax.spines[bottom].set_visible(False)ax.spines[left].set_visible(False)ax.set_facecolor(#001219)for bar, x, y in zip(bar_attr.top_bars,bar_attr.bar_length,bar_attr.bar_rank,):ax.text(x - 0.3,y,datafier.col_var.loc[bar, continent],haright,colork,size12,)# 读取数据 df pd.read_csv(sample.csv).set_index(time) # 分类 col pd.DataFrame({columns: [Afghanistan, Angola, Albania, USA, Argentina],continent: [Asia, Africa, Europe, N America, S America],} ).set_index(columns) # 颜色 bar_cols {Afghanistan: #2a9d8f,Angola: #e9c46a,Albania: #e76f51,USA: #a7c957,Argentina: #e5989b, }# 新建画布 cnv nim.Canvas(figsize(12.8, 7.2), facecolor#001219) bar nim.Barplot(df, %Y-%m-%d, 3d, post_updatepost_update, rounded_edgesTrue, gridFalse ) # 条形图分类 bar.add_var(col_varcol) # 条形图颜色 bar.set_bar_color(bar_cols) # 标题设置 bar.set_title(Sample Title, colorw, weight600) # x轴设置 bar.set_xlabel(xlabel, colorw) # 时间设置 bar.set_time(callbacklambda i, datafier: datafier.data.index[i].strftime(%b, %Y), colorw ) # 文字显示 bar.set_text(sum,callbacklambda i, datafier: fTotal :{np.round(datafier.data.iloc[i].sum(),2)},size20,x0.72,y0.20,colorw, )# 文字颜色设置 bar.set_bar_annots(colorw, size13) bar.set_xticks(colorsw, length0, labelsize13) bar.set_yticks(colorsw, labelsize13) # 条形图边框设置 bar.set_bar_border_props(edge_colorblack, pad0.1, mutation_aspect1, radius0.2, mutation_scale0.6 ) cnv.add_plot(bar) cnv.animate() # 显示 # plt.show() # 保存gif cnv.save(example3, 24, gif)效果如下可以看出比上面的简单示例好看了不少。另外作者还提供了相关的接口文档。帮助我们理解学习如何去自定义参数设置。包含画布设置、保存设置、条形图设置、数据设置等等。下面我们就通过获取电视剧「狂飙」角色的百度指数数据来制作一个动态条形图。先对网页进行分析账号登陆百度指数搜索关键词「高启强」查看数据情况。发现数据经过js加密所以需要对获取到的数据进行解析。使用了一个开源的代码分分钟就搞定数据问题。具体代码如下其中「cookie值」需要替换成你自己的。import datetime import requests import jsonword_url http://index.baidu.com/api/SearchApi/thumbnail?area0word{}def get_html(url):headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36,Host: index.baidu.com,Referer: http://index.baidu.com/v2/main/index.html,Cipher-Text: 1652425237825_1652501356206_VBpwl9UG8Dvs2fAi91KToRTSAP7sDsQU5phHL97raPDFJdYz3fHf9hBAQrGGCsqJoP7yb44Uvf91F7vqJLVL0tKnIWEW3jXAI30xx340rhcwUDQZ162FPAe0a1jsCluJRmMLZtiIplubGMW/QoE/0Pw2caH39Ok8IsudE4wGLBUdYg1/bKl4MGwLrJZ7H6wbhR0vT5X0OdCX4bMJE7vcwRCSGquRjam03pWDGZ51X15fOlO0qMZ2kqa3BmxwNlfEZ81l3L9nZdrc3/Tl4mNpaLM7vA5WNEQhTBoDVZs6GBRcJc/FSjd6e4aFGAiCp1Y8MD66chTiykjIN51s7gbJ44JfVS0NjBnsvuF55bs}cookies {Cookie: 你的cookie}response requests.get(url, headersheaders, cookiescookies)return response.textdef decrypt(t, e):n list(t)i list(e)a {}result []ln int(len(n) / 2)start n[ln:]end n[:ln]for j, k in zip(start, end):a.update({k: j})for j in e:result.append(a.get(j))return .join(result)def get_ptbk(uniqid):url http://index.baidu.com/Interface/ptbk?uniqid{}resp get_html(url.format(uniqid))return json.loads(resp)[data]def get_data(keyword, start2011-01-02, end2023-01-02):url https://index.baidu.com/api/SearchApi/index?area0word[[%7B%22name%22:%22{}%22,%22wordType%22:1%7D]]startDate{}endDate{}.format(keyword, start, end)data get_html(url)data json.loads(data)uniqid data[data][uniqid]data data[data][userIndexes][0][all][data]ptbk get_ptbk(uniqid)result decrypt(ptbk, data)result result.split(,)start start_date.split(-)end end_date.split(-)a datetime.date(int(start[0]), int(start[1]), int(start[2]))b datetime.date(int(end[0]), int(end[1]), int(end[2]))node 0for i in range(a.toordinal(), b.toordinal()):date datetime.date.fromordinal(i)print(date, result[node])node 1with open(data.csv, a) as f:f.write(keyword , date.strftime(%Y-%m-%d) , result[node] \n)if __name__ __main__:names [唐小龙, 孟德海, 孟钰, 安欣, 安长林, 徐忠, 徐江, 曹闯, 李响, 李宏伟, 李有田, 杨健, 泰叔, 赵立冬, 过山峰, 陆寒, 陈书婷, 高启兰, 高启强, 高启盛, 高晓晨]for keyword in names:start_date 2023-01-14end_date 2023-02-04get_data(keyword, start_date, end_date)爬取数据情况如下一共是400多条其中有空值存在。然后就是转换成pynimate所需的数据格式。对数据进行数据透视表操作并且将空值数据填充为0。import pandas as pd# 读取数据 df pd.read_csv(data.csv, encodingutf-8, headerNone, names[name, day, number])# 数据处理数据透视表 df_result pd.pivot_table(df, valuesnumber, index[day], columns[name], fill_value0) # 保存 df_result.to_csv(result.csv)保存文件数据情况如下。使用之前深色模式的可视化代码并略微修改。比如设置条形图数量(n_bars)、标题字体大小及位置、中文显示等等。from matplotlib import pyplot as plt import pandas as pd import pynimate as nim# 中文显示 plt.rcParams[font.sans-serif] [SimHei] #Windows plt.rcParams[font.sans-serif] [Hiragino Sans GB] #Mac plt.rcParams[axes.unicode_minus] False# 更新条形图 def post_update(ax, i, datafier, bar_attr):ax.spines[top].set_visible(False)ax.spines[right].set_visible(False)ax.spines[bottom].set_visible(False)ax.spines[left].set_visible(False)ax.set_facecolor(#001219)# 读取数据 df pd.read_csv(result.csv).set_index(day)# 新建画布 cnv nim.Canvas(figsize(12.8, 7.2), facecolor#001219) bar nim.Barplot(df, %Y-%m-%d, 3h, post_updatepost_update, rounded_edgesTrue, gridFalse, n_bars6 ) # 标题设置 bar.set_title(《狂飙》主要角色热度排行(百度指数), colorw, weight600, x0.15, size30) # 时间设置 bar.set_time(callbacklambda i, datafier: datafier.data.index[i].strftime(%Y-%m-%d), colorw, y0.2, size20 )# 文字颜色设置 bar.set_bar_annots(colorw, size13) bar.set_xticks(colorsw, length0, labelsize13) bar.set_yticks(colorsw, labelsize13) # 条形图边框设置 bar.set_bar_border_props(edge_colorblack, pad0.1, mutation_aspect1, radius0.2, mutation_scale0.6 ) cnv.add_plot(bar) cnv.animate() # 显示 # plt.show() # 保存gif cnv.save(kuangbiao, 24, gif)执行代码《狂飙》电视剧角色热度排行的动态条形图就制作好了。结果如下看着还不错。相关数据及代码都已上传评论区回复【狂飙】即可获取。
http://www.hkea.cn/news/14568245/

相关文章:

  • 营销型公司网站有哪些偃师建设局网站
  • 安徽建设工程造价信息网站h5课件制作软件
  • 推荐的网站网站建设条件
  • 邯郸建设局网站南阳市住房和城市建设局网站
  • 办个网站需要多少钱手机网站设计建设服务
  • jsp做就业网站靖江网站开发
  • 上海公司注册一站式企业服务四川网站建设设计公司
  • 做淘宝客新增网站推广v9双语版网站怎么做
  • 莱芜区宣传部网站苏州新区保洁公司
  • 如何构建电子商务网站图片上传分享平台
  • 做网站基本教程江川区住房和城乡建设局网站
  • 营销软件站wordpress文章小尾巴
  • 廊坊网站建设推广快速搭建网站域名绑定设置
  • 好的室内设计网站网站栏目
  • mysql做镜像网站wordpress如何定义锚
  • 江门网站推广多少钱电子商务运营是做什么的
  • 在线做网页的网站品牌网站建设小8蝌蚪
  • 网站流量怎么赚钱wordpress 特别慢
  • 天津网站排名优化wordpress设置标题颜色
  • 国家关于网站信息建设管理文件郴州市人口
  • 灵台网站建设越南做彩票网站是违法的吗
  • 完全菜鸟七天学会建网站网站建设与网页设计课
  • 青海省网站建设高端网站建设与制作实验报告
  • 科讯怎么建设网站wordpress 获取标签所有文章
  • 网站实现步骤及方法是阿里巴巴客户管理系统
  • 松江网站建设建设局网站查询个人信息
  • 什么叫子网站深圳南山网站建设公司
  • 网站设置的用途淮南市建设工程质量监督中心网站
  • 物流官网网站wordpress 3.9 模板
  • 辽阳专业建设网站如何快捷建企业网站