社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

【Python】matplotlib + pynimate,轻松让数据动起来!

机器学习初学者 • 13 小时前 • 2 次点击  

本文再分享一个Python工具pynimate,轻松让数据动起来。


pynimate安装

pynimate只支持Python 3.9以上版本,如果电脑中有低版本Python,可构建一个Python3.9版本虚拟环境,

conda create -n py39 python=3.9
conda activate py39

pip install pynimate -i https://pypi.tuna.tsinghua.edu.cn/simple

pynimate使用

效果图代码

from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
import os
import matplotlib as mpl
import pynimate as nim


mpl.rcParams['font.family'] = 'DejaVu Sans'#切换系统支持的字体

#定义post_update,设置插值频率
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("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.87.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()

#图形保存
cnv.save("test"24"mp4"#保存为mp4格式
#cnv.save("test", 24, "mp4") #保存为gif格式



-END-

推荐阅读:
👉Python matplotlib保姆级教程
👉保姆级matplotlib教程—详细目录
👉Python seaborn保姆级教程
👉保姆级seaborn教程:详细目录

图片

图片
图片

图片

图片

图片

图片

图片


图片

图片



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/179752
 
2 次点击