sjvisualizer,一个超强的Python数据可视化动画库

news2024/11/24 22:33:22

大家好,今天给大家介绍一个非常棒的数据可视化库,sjvisualizer

根据时间序列数据制作动态图表,包含条形图、饼图、堆叠条形图、折线图、堆叠面积图。

可以先看一下官方的示例~

图片

只需几行代码,就可以制作电脑浏览器发展史的动态图表。

GitHub地址:

https://github.com/SjoerdTilmans/sjvisualizer

技术交流

技术要学会分享、交流,不建议闭门造车。一个人可以走的很快、一堆人可以走的更远。

本文文章由粉丝的讨论与分享、推荐,资料干货、资料分享、数据、技术交流提升,均可加交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

方式①、添加微信号:dkl88194,备注:来自CSDN + 加群
方式②、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

使用pip进行该库的安装。

# 安装sjvisualizer
pip install sjvisualizer

然后需要加载特定格式的数据,下面是一个数据示例。

图片

其中第一列中包含日期,随后的每个列标题都是数据类别,下面包含每个日期的值。

此外还可以进行一些自定义配置,比如添加图标、添加自定义颜色以及调整可视化的大小。

大家可以查看相应的文档。

https://www.sjdataviz.com/software

作者还提供了不少其它案例,并且提供了数据源。

图片

同样可以访问如下地址,进行查看。

https://www.sjdataviz.com/data

下面就来看一下官方提供的几个示例代码吧~

条形图

最受关注的Instagram账号。

图片

数据集情况如下。

图片

发现数据有部分缺失,说明程序会进行补全操作

具体代码如下。

from sjvisualizer import Canvas
from sjvisualizer import DataHandler
from sjvisualizer import BarRace
import json


def main(fps=60, duration=0.35):
    number_of_frames = duration * 60 * fps

    # 加载颜色配置文件
    with open('colors/colors.json') as f:
        colors = json.load(f)

    # 加载数据源
    df = DataHandler.DataHandler(excel_file="data/Insta.xlsx", number_of_frames=number_of_frames).df

    canvas = Canvas.canvas()

    # 添加条形图图表
    bar_chart = BarRace.bar_race(canvas=canvas.canvas, df=df, colors=colors)
    canvas.add_sub_plot(bar_chart)

    # 添加静态文字
    canvas.add_title("MOST FOLLOWED INSTAGRAM ACCOUNTS", color=(0, 132, 255))
    canvas.add_sub_title("By Number of Followers in Millions", color=(0, 132, 255))

    # 时间设置
    canvas.add_time(df=df, time_indicator="month")

    # 保存颜色配置文件
    with open("colors/colors.json", "w") as file:
        json.dump(colors, file, indent=4)

    # 输出视频文件
    canvas.play(fps=fps, record=True, file_name="output1.mp4")


if __name__ == "__main__":
    main()

饼图

桌面操作系统市场份额。

图片

数据集情况如下,一共有200多条。

图片

其中本次设置了中文字体,可以在代码中进行修改。

图片

饼图动态图表代码如下。

from sjvisualizer import Canvas
from sjvisualizer import DataHandler
from sjvisualizer import PieRace
import json


def main(fps=60, duration=0.35):
    number_of_frames = duration * 60 * fps

    # 加载颜色配置文件
    with open('colors/colors.json') as f:
        colors = json.load(f)

    df = DataHandler.DataHandler(excel_file="data/DesktopOS.xlsx", number_of_frames=number_of_frames).df

    canvas = Canvas.canvas()

    # 添加饼图图表
    bar_chart = PieRace.pie_plot(canvas=canvas.canvas, df=df, colors=colors)
    canvas.add_sub_plot(bar_chart)

    # 加载静态文字
    canvas.add_title("桌面操作系统市场份额", color=(0, 132, 255))
    canvas.add_sub_title("2003 - 2009", color=(0, 132, 255))

    # 时间设置
    canvas.add_time(df=df, time_indicator="month")

    # 保存颜色配置文件
    with open("colors/colors.json", "w") as file:
        json.dump(colors, file, indent=4)

    canvas.play(fps=fps, record=True, file_name="output3.mp4")


if __name__ == "__main__":
    main()

合成图

电脑浏览器发展史动态图表。

图片

可以发现每个图表都带有浏览器的logo。

如果你想要添加自定义的图像logo,是不需要进行任何编码!

图片

只需将图像文件 (.png) 放入assets文件夹中,只要它与我们的数据类别具有相同的名称,程序就会自动选择。

合成图动态图表代码如下。

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 LineChart
from sjvisualizer import AreaChart
import json


def main(fps=60, duration=0.35):
    number_of_frames = duration * 60 * fps

    # 加载颜色配置文件
    with open('colors/colors.json') as f:
        colors = json.load(f)

    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)

    # 条形图
    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)

    # 饼图
    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)

    # 堆叠图
    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"]
    }

    # 折线图
    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)

    # 面积图
    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)

    # 保存颜色配置文件
    with open("colors/colors.json", "w") as file:
        json.dump(colors, file, indent=4)

    canvas.play(fps=fps, record=True, file_name="output2.mp4")


if __name__ == "__main__":
    main()

总结

相信不少小伙伴,对自己做的静态图表平平无奇而烦恼。

那么试试动态图表,应该是个不错的选择。

图片

不仅有新意,而且还直观+美观。

不过市面上不少工具都需要收费使用,如果你的预算不够,那么Python动态数据可视化库,倒是一个不错的选择,免费~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1193811.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用jmeter进行简单压力测试

前言 最近项目要上线,需要项目进行简单的压力测试,本次使用的是jmeter来进行的,由于本人不是专业测试,只是对本次使用过程进行简单的记录. 一.jemeter的下载与安装 我这个已经安装很久了,具体过程这个可以查询下其他博客(偷个懒). 二.使用过程 1.测试计划右击-添加(add)-线…

Kubernetes 创建pod的yaml文件-简单版-nginx

apiVersion: v1 #api文档版本 kind: Pod # 资源类型 Deployment,StatefulSet之类 metadata: #pod元数据 描述信息 name: nginx-demo labels: type: app #自定义标签 version: 1.0.0 # 自定义pod版本 namespace: default spec: #期望Pod按照这里的描述创建 cont…

Python类的定义和使用:什么是类?实在不知道啥叫累!

文章目录 前言1.基础概念2.定义一个 Person 类3.类定义4.类方法定义5.类的继承6.类的公有,私有7.子类调用父类的方法关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例…

“第六十五天”

固态硬盘:SSD 原理:基于闪存技术Flash Memory ,属于电可擦除ROM,即EEPROM; 由闪存翻译层和存储介质组成;闪存翻译层负责翻译逻辑块号,找到对应页,存储介质是由多个闪存芯片构成的&…

Windows中的Directory Junction和Directory symbolic link

这两者有几点显著的区别: 前者谁都可以创建,后者需要提升至管理员权限才可以创建 这两者创建的手时候都不需要Target存在

C++动态库

C动态库 动态库文件(Dynamic Link Library,DLL)是程序在运行时所需要调用的库。静态库文件是程序在编译时所需要调用的库。 1 环境介绍 VS版本:VS2017 编程语言:C 2 功能介绍 使用VS2017项目模板创建C动态库生成…

(论文阅读24/100)Visual Tracking with Fully Convolutional Networks

文献阅读笔记(sel - CNN) 简介 题目 Visual Tracking with Fully Convolutional Networks 作者 Lijun Wang, Wanli Ouyang, Xiaogang Wang, and Huchuan Lu 原文链接 http://202.118.75.4/lu/Paper/ICCV2015/iccv15_lijun.pdf 【DeepLearning】…

AMESim 2021安装教程

主要是AMESim的安装 写在前面,由于项目需要,需要自学AMESim,因此需要安装这个软件,目前仅仅安装使用,还不涉及到与MATLAB的联合仿真,老板说用 RT LAB半实物仿真平台,但是简单搜了一下&#xff0…

单链表(4)

看尾插函数 尾插函数跟头插函数唯一的不同就是找尾巴 尾插函数: 首先是动态申请一个新结点 把val放到新结点里面当新结点的data 然后在单链表里面找尾巴 比如说指针p找到尾巴了,现在将指针p指向新的结点,尾插就好了 这里的p类似于头插函…

AIX5.3安装weblogic10.3

目录 1安装IBM JDK 1.6 2图形化准备 3安装weblogic 准备 4图形化界面安装 1安装IBM JDK 1.6 1.1检查操作系统 # oslevel 5.3.0.0 # bootinfo -y (显示AIX机器硬件是64位) 64 # bootinfo -K (显示AIX系统内核是64位) 64 因此,系统需要安装64位的jdk,…

STM32C8T6实现微秒延时函数delay_us

/* USER CODE BEGIN 0 */ void delay_us(uint32_t ii) {uint32_t temp;SysTick->LOADii*8;SysTick->VAL0x00;SysTick->CTRL0x01;//2号位1使用内核时钟do{tempSysTick->CTRL;}while(temp&0x01&&!(temp&(1<<16)));SysTick->CTRL0X00;SysTic…

【Unity插件】分享几个完全免费的2D角色动画生成器(推荐收藏)

文章目录 前言一、lpc-character-generator二、Universal-LPC-Spritesheet-Character-Generator三、UP主开发的2D人物换装系统四、Character Editor: Megapack完结 前言 你可能游戏开发能力很强&#xff0c;但是正愁于2D角色动画&#xff0c;那么这篇文章就是为你而准备的&…

深度学习之各种配置环境

如何使用python进行深度学习&#xff0c;我们需要配置相应的环境 第一步&#xff1a;先安装python python的官网地址&#xff1a;https://www.python.org/ 点进去&#xff0c;点击 Downloads&#xff0c;然后点击 Windows 等待下载完成&#xff0c;安装步骤请参考下文&#x…

超声波俱乐部分享:Enter AI native application

11月5日&#xff0c;2023年第十四期超声波俱乐部内部分享会在北京望京举行。本期的主题是&#xff1a;Enter AI native application。 到场的嘉宾有&#xff1a;超声波创始人杨子超&#xff0c;超声波联合创始人、和牛商业创始人刘思雨&#xff0c;蓝驰创投合伙人刘勇&#xf…

关于有源电力滤波器在地铁站低压配电系统中的应用分析

安科瑞 崔丽洁 摘要&#xff1a;作为国家提出的绿色电网、节能降耗已成为现代化企业努力的目标&#xff0c;也是企业急需解决的问题。作为地铁车站这类市政公共交通建筑的着重系统——配电系统。实现绿色电网实质上是解决电网中存在的各种电能问题&#xff0c;主要是涉及到谐波…

倍福CX9020 Windows CE6.0安装中文字库方法(附字库文件)

应用背景介绍 倍福的EPC产品有些是附带Windows CE系统的&#xff0c;例如CX9020&#xff0c;而且多数系统都是英文的&#xff0c;而且没有附带中文的字库&#xff0c;如果想要在PLC HMI中使用中文进行显示就无法实现&#xff0c;经常有工程师在电脑上编好程序和界面以后测试没…

10. GPIO中断

10. GPIO中断 回顾stm32中断系统STM32中断向量表中断向量偏移NVIC中断控制器 Cortex_A7 中断系统中断向量表GIC控制器中断IDGIC逻辑分块CP15协处理器c0寄存器c1寄存器c12寄存器c15寄存器 中断使能中断优先级设置优先级数配置 GICC_PMR抢占优先级和子优先级位数设置 GICC_BPR优先…

Linux---(五)三大工具yum、vim、gcc/g++

文章目录 一、yum工具1.Linux中安装软件的方法&#xff1a;2.什么是yum?3.yum源更新 二、Linux编辑器--vim1.IDE例子2.vim&#xff08;1&#xff09;vim的常用模式及切换模式&#xff08;2&#xff09;底层模式常用命令&#xff08;3&#xff09;插入模式常用命令&#xff08;…

C#操作注册表的方法

注册表是Microsoft Windows操作系统中的一个重要组成部分&#xff0c;用于存储和管理系统和应用程序的配置信息。它是一个层次结构的数据库&#xff0c;以树形结构组织&#xff0c;类似于文件系统中的文件夹和文件。 注册表存储了许多与操作系统和软件相关的信息&#…

分享Python的十大库,这你一定得知道!

文章目录 前言关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 前言 Python为我们提供了非常完善的基础库&#…