Python实现动态条形图的示例详解
作者:Python 发布时间:2021-05-18 13:40:38
标签:Python,动态,条形图
关于数据可视化的模块,之前已经分享过很多了,小伙伴们可以到历史文章中搜索,不过都是静态的可视化数据展示效果。
这几天刚刚发现的这款动态数据可视化模块pynimate值得一提。
它可以将返回的pandas.DataFrame数据对象直接进行解析,最后显示为可视化动态数据。
https://github.com/julkaar9/pynimate
https://julkaar9.github.io/pynimate/
上述分别是pynimate模块的GitHub源码地址和接口API文档地址,可以参考完成相应的数据可视化。
目前,官方的API文档只提供了一个条形图的源代码实例,可能大佬平台太忙了没有时间写文档吧!
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")
cnv = nim.Canvas()
bar = nim.Barplot(df, "%Y-%m-%d", "2d")
bar.set_time(callback=lambda i, datafier: datafier.data.index[i].strftime("%b, %Y"))
cnv.add_plot(bar)
cnv.animate()
plt.show()
直接使用pip的方式安装pynimate模块,需要注意的是该模块直接支持的是3.9以上的python版本,各个镜像站应该都有提供。
pip install pynimate
pip install matplotlib
pip install pandas
安装完成之后,我们直接启动当前的.py模块会出现下面的动态条形图的效果。
相比其他的python可视化模块,pynimate比较优秀的是它可以将动态图形的执行过程直接保存为Gif格式的动态图片。
cnv.save("file", 24, "gif")
另外,该pynimate模块作者也提供了可以通过自定义的方式去设置可视化动态图形的方式供我们可以参考。
from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
import os
dir_path = os.path.dirname(os.path.realpath(__file__))
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"],
ha="right",
color="k",
size=12,
)
df = pd.read_csv(dir_path + "/data/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_update=post_update, rounded_edges=True, grid=False
)
bar.add_var(col_var=col)
bar.set_bar_color(bar_cols)
bar.set_title("Sample Title", color="w", weight=600)
bar.set_xlabel("xlabel", color="w")
bar.set_time(
callback=lambda i, datafier: datafier.data.index[i].strftime("%b, %Y"), color="w"
)
bar.set_text(
"sum",
callback=lambda i, datafier: f"Total :{np.round(datafier.data.iloc[i].sum(),2)}",
size=20,
x=0.72,
y=0.20,
color="w",
)
bar.set_bar_annots(color="w", size=13)
bar.set_xticks(colors="w", length=0, labelsize=13)
bar.set_yticks(colors="w", labelsize=13)
bar.set_bar_border_props(
edge_color="black", pad=0.1, mutation_aspect=1, radius=0.2, mutation_scale=0.6
)
cnv.add_plot(bar)
cnv.animate()
plt.show()
上面通过自定义的方式实现动态条形图效果更加炫酷,给开发者保留了更多的发挥空间,结果展示如下。
来源:https://mp.weixin.qq.com/s/Bqca3Gg1Cwdt-eoksYuZrA
0
投稿
猜你喜欢
- 前言我们知道在这个互联网时代,评论已经在我们的生活到处可见,评论区里面的信息是一个非常有趣和有争议的地方。我们今天,就来获取某技术平台的评论
- PHP session用法其实很简单它可以把用户提交的数据以全局变量形式保存在一个session中并且会生成一个唯一的session_id,
- 一、简介urllib 库,它是 Python 内置的 HTTP 请求库,不需要额外安装即可使用,它包含四个模块:`request` 请求模块
- 问题Go语言在编译时不会将配置文件这类第三方文件打包进二进制文件中它既受当前路径的影响,也会因所填写的不同而改变,并非是绝对可靠的解决命令行
- 本文实例讲述了Python实现随机生成手机号及正则验证手机号的方法。分享给大家供大家参考,具体如下:依据根据2017年10月份最新的手机号正
- 过滤一遍并将敏感词替换之后剩余字符串中新组成了敏感词语,这种情况就要用递归来解决,直到过滤替换之后的结果和过滤之前一样时才算结束第一步:建立
- 使用tkFileDialog实现文件选择、保存和路径选择概述看了下Tkinter的文档,对于Pop-up dialog有三类,现在用到的是t
- numpy.random.shuffle在做将caffe模型和预训练的参数转化为tensorflow的模型和预训练的参数,以便微调,遇到如下
- 1.简述:xlrd是读取excel表格数据;支持 xlsx和xls 格式的excel表格;三方模块安装方式:pip3 install xlr
- 使用python的turtle库画一个方格和圆打开python编译器,导入turtle库from turtle import *首先画一个距
- 中间件中间件是放在客户端和服务端的中间。 当你的客户端对某个接口发起一个请求,但是在到达接口2之前,这里是有一层中间件的处理。一般
- 1.连接本机数据库 A. 本机若有静态IP,oracle安装好后,就能连接本机oracle数据库。 B. 安装oracle时,本机没有静态I
- 常见的一种应用场景:条件:假设A的shape为[4, 2],B的shape为[5, 2]目的:实现A中的每一行, 减去B中的所有行(broa
- 正文:本文展示一些高级的Python设计结构和它们的使用方法。在日常工作中,你可以根据需要选择合适的数据结构,例如对快速查找性的
- 参考于: python cs架构实现简单文件传输原文中程序运行有误,在此做修改与解释,如下: 功能说明:共2个py文件分别为server和c
- 之前在网上看过一些介绍Django处理请求的流程和Django源码结构的文章,觉得了解一下这些内容对开发Django项目还是很有帮助的。所以
- 本文实例讲述了Python列表操作。分享给大家供大家参考,具体如下:#coding=utf8'''''
- 1.首先定义一个log文件# -*- coding: utf-8 -*-import osimport timeimport logging
- 这篇文章主要介绍了python实现windows桌面截图代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- 1.切片# 切片:取list或tuple的部分元素nameList = ["Willard","ChenJD&