数据动态展现:python柱状赛车动画制作教程
生成柱状赛车动画
在此代码示例中,我们将展示如何从 SQLite 数据库中读取数据,并使用 bar_chart_race
库来创建一个吸引人的柱状赛车动画。以下是代码的主要部分和它们的作用:
-
导入必要的库:
numpy
和pandas
:用于数据处理和分析。sqlite3
:用于连接 SQLite 数据库并读取数据。bar_chart_race
:用于生成柱状赛车动画。matplotlib.pyplot
:用于基本的图形绘制。moviepy.editor
和speedx
:用于将生成的 GIF 转换为 MP4 格式,并调整视频播放速度。os
:用于处理文件路径和删除不必要的文件。
-
定义数据读取函数
read_data_from_db
:
此函数连接到 SQLite 数据库,读取指定的数据表,并对数据进行基本处理,例如重命名列名和设置索引。 -
定义生成柱状赛车图动画的函数
create_bar_chart_race
:
此函数读取数据,准备数据,并使用bar_chart_race
库来生成柱状赛车动画。它还将生成的 GIF 转换为 MP4 格式,并允许用户通过参数调整动画的播放速度和背景颜色。 -
主函数:
在主函数中,我们调用create_bar_chart_race
函数,并为它提供必要的参数,以生成并保存柱状赛车动画。
下面是完整的代码:
# 生成柱状赛车动画
该代码示例展示了如何从SQLite数据库读取数据并使用`bar_chart_race`库来创建一个柱状赛车动画。
```python
# 导入必要的库
import numpy as np
import pandas as pd
import sqlite3
import bar_chart_race as bcr
import matplotlib.pyplot as plt
import moviepy.editor as mp
import os
from moviepy.video.fx.all import speedx
# 定义从数据库读取并处理数据的函数
def read_data_from_db(table_name, column_name=None):
# 连接数据库
conn = sqlite3.connect(r'D:\wenjian\python\smart\data\req_data.db')
# 读取数据表
query = f"SELECT * FROM {table_name}"
dfdata = pd.read_sql_query(query, conn)
# 关闭数据库连接
conn.close()
# 修改列名称,将指定列重命名为"date"
dfdata = dfdata.rename({column_name: "date"}, axis=1)
# 将数据舍入到三位小数
for col in dfdata.columns:
if col != "date":
dfdata.loc[:, col] = np.round(dfdata.loc[:, col], 3)
# 设置日期列为索引
dfdata.set_index("date")
return dfdata
# 定义生成柱状赛车图动画的函数
def create_bar_chart_race(table_name, column_name=None, filename=None, title="", dpi=300, speed=1, bgcolor='white'):
"""
参数:
table_name: 数据库表名
column_name: 作为日期的列名
filename: 输出文件的名称,如果提供,则保存为MP4文件,否则在Jupyter Notebook中以交互方式显示
title: 图表的标题
dpi: 图表的像素密度,每英寸的点数
speed: 视频播放速度
bgcolor: 背景颜色
"""
# 读取数据
df = read_data_from_db(table_name, column_name)
# 数据准备,设置日期为索引,并且删除日期列
df.set_index('date', inplace=True)
df.index = pd.to_datetime(df.index)
# 设置中文显示和背景颜色
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.facecolor'] = bgcolor
# 使用 bar_chart_race 生成条形图赛跑图
bcr.bar_chart_race(df, filename=filename+'.gif', title=title, dpi=dpi)
# 将 GIF 文件转换为 MP4 文件
clip = mp.VideoFileClip(filename+'.gif')
clip = speedx(clip, factor=speed) # 调整视频播放速度
clip.write_videofile(filename+'.mp4')
# 删除 GIF 文件
os.remove(filename+'.gif')
# 调用函数
if __name__ == '__main__':
# 参数分别是数据库表的名称、X轴的列、导出文件的名称、动画的标题、分辨率、动画播放速度、背景颜色
create_bar_chart_race('测试2', '年份', '测试', title="测试2", dpi=300, speed=2)
标题建议
- 数据可视化实战:创建柱状赛车动画
- 动态展示数据竞争:柱状赛车动画制作
- 从数据库到动画:制作柱状赛车图
- 数据动态展现:柱状赛车动画制作教程
- 创造视觉冲击:柱状赛车动画的制作与应用
标签建议
- 数据可视化
- 柱状赛车图
- 数据处理
- 数据动画
- 数据库操作
- 动态图表
版权声明:
作者:余汉波
链接:https://www.sanrenjz.com/2023/10/10/%e6%95%b0%e6%8d%ae%e5%8a%a8%e6%80%81%e5%b1%95%e7%8e%b0%ef%bc%9apython%e6%9f%b1%e7%8a%b6%e8%b5%9b%e8%bd%a6%e5%8a%a8%e7%94%bb%e5%88%b6%e4%bd%9c%e6%95%99%e7%a8%8b/
文章版权归作者所有,未经允许请勿转载。
THE END