数据动态图新工具—sjvisualizer
本文分享一个Python动态图工具 sjvisualizer,轻松将数据动态展示!推荐阅读: 👉《Python Matplotlib可视化教程1.0》 👉《R ggplot2可视化教程1.0》
sjvisualizer目前支持:
Bar races(竞速柱状图) Animated pie charts(竞速饼图) Animated stacked bar charts(竞速堆叠条形图) Animated line charts(竞速折线图)
sjvisualizer安装
pip install sjvisualizer -i https://pypi.tuna.tsinghua.edu.cn/simple
sjvisualizer使用
通过一个例子简单介绍,输入数据长这样,
一个简单例子,
from sjvisualizer import Canvas
from sjvisualizer import DataHandler
from sjvisualizer import BarRace
from sjvisualizer import PieRace
from sjvisualizer import Date
from sjvisualizer import StackedBarChart
from sjvisualizer import StaticImage
from sjvisualizer import LineChart
from sjvisualizer import AreaChart
import time
import jsondef main(fps=60, duration=0.35):
number_of_frames = duration * 60 * fps
# 导入颜色盘,
with open('data/colors.json') as f:
colors = json.load(f)
##DataHandler.DataHandler处理数据并在每个数据点之间进行插值
df = DataHandler.DataHandler(excel_file="data/browsers.xlsx",
number_of_frames=number_of_frames).df
canvas = Canvas.canvas()
width = int(canvas.canvas["width"])
height = int(canvas.canvas["height"])
chart_height = int(height / 3.5)
# BarRace.bar_race制作竞速柱状图
bar_chart = BarRace.bar_race(canvas=canvas.canvas,
df=df,
title="Bar race",
colors=colors,
height=chart_height,
width=int(width / 6),
x_pos=int(height / 3 / 2),
y_pos=int(width / 5) / 2)
canvas.add_sub_plot(bar_chart)
# PieRace.pie_plot制作竞速饼图
pie_plot = PieRace.pie_plot(canvas=canvas.canvas,
df=df,
title="Pie race",
colors=colors,
height=chart_height,
width=int(width / 6),
x_pos=int(height / 3 / 2 * 3),
y_pos=int(width / 5) / 2)
canvas.add_sub_plot(pie_plot)
# StackedBarChart.stacked_bar_chart制作竞速堆叠柱状图
stacked = StackedBarChart.stacked_bar_chart(canvas=canvas.canvas,
df=df,
title="Stacked",
colors=colors,
height=chart_height,
width=int(width / 6),
x_pos=int(height / 3 / 2 *
5.5),
y_pos=int(width / 5) / 2,
number_of_bars=25)
canvas.add_sub_plot(stacked)
# 为竞速折线图添加时间分割时间线
events = {
"Event 1": ["28/01/1998", "28/01/2000"],
"Event 2": ["28/01/2018", "28/01/2019"]
}
# LineChart.line_chart构建竞速折线图
line = LineChart.line_chart(canvas=canvas,
df=df,
title="Line chart",
colors=colors,
height=chart_height,
width=int(width / 6),
x_pos=int(height / 3 / 2),
y_pos=int(width / 5) + 1.05 * chart_height,
events=events)
canvas.add_sub_plot(line)
# AreaChart.area_chart构建竞速面积图
area = AreaChart.area_chart(canvas=canvas,
df=df,
title="Area chart",
colors=colors,
height=chart_height,
width=int(width / 6),
x_pos=int(height / 3 * 2),
y_pos=int(width / 5) + 1.05 * chart_height)
canvas.add_sub_plot(area)
# 时间设置
date = Date.date(canvas=canvas.canvas,
height=int(height / 20),
width=int(width / 20),
x_pos=int(height / 3 / 2 * 8),
y_pos=int(width / 5),
time_indicator="month",
df=df)
canvas.add_sub_plot(date)
# StaticImage.static_image将静态图像添加到动态图中,也就是图中的那个logo
img = StaticImage.static_image(
canvas=canvas.canvas,
file="test.jpeg",
width=height / 7,
height=height / 7,
x_pos=width / 3 * 2.25,
y_pos=height / 1.4)
canvas.add_sub_plot(img)
canvas.play(fps=fps)
#canvas.play(fps=fps, record=True, file_name="subplot.mp4") #直接存储为mp4格式
if __name__ == "__main__":
main()
进一步学习:https://github.com/SjoerdTilmans/sjvisualizer
-END- 推荐阅读:
10W字《R ggplot2可视化教程1.0》来了! 详解Python列表推导式|迭代器|生成器|匿名函数 Jupyter Notebook的16个超棒插件! 临床WGS/WES/Gene Panel/Single gene异同 一图胜千言,超形象图解NumPy教程! 那些神经网络可视化利器 R Graphics Cookbook中译教程
我的学习小圈子👉 加入 赞、在看就是最大的支持