当前位置: 首页 > news >正文

WitTkChart:基于Python tkinter Canvas的开源图表可视化库

WitTkChart

WitTkChart是一个基于Python tkinter Canvas的开源图表可视化库,允许用户通过简单的API调用创建和更新多种精美的图表。该库参考了Echarts的配色风格,提供了丰富的图表类型和动态更新功能。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

功能特性

  • 丰富的图表类型:支持柱状图、折线图、饼图、散点图、雷达图、树型图、旭日图、箱形图、热力图、地图、桑基图、漏斗图、仪表盘等13种图表类型
  • Echarts风格配色:采用了Echarts图表库的配色方案,使图表更加美观
  • 动态更新:支持图表的动态数据更新,可设置更新间隔
  • 响应式设计:图表会根据窗口大小自动调整
  • 简单易用的API:提供简洁明了的接口,方便用户快速上手

安装说明

WitTkChart是一个纯Python库,仅依赖于Python标准库中的tkinter模块,因此不需要安装额外的第三方库。

  1. 确保您的Python环境已安装(推荐Python 3.6或更高版本)
  2. 克隆或下载WitTkChart仓库
  3. 将wittkchart.py文件复制到您的项目目录中

快速开始

以下是一个简单的示例,展示如何使用WitTkChart创建一个柱状图:

from wittkchart import WitTkChart# 创建图表数据
data = [65, 59, 80, 81, 56, 55, 72]
categories = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']# 创建并显示图表
chart = WitTkChart(chart_type='bar', data=data, categories=categories,title='一周销售额统计'
)
chart.start()

图表类型

WitTkChart支持以下13种图表类型:

图表类型类型代码描述
柱状图bar通过条形长度来表现数据大小,适用于分类数据比较
折线图line展示数据的变化趋势,适用于时间序列数据
饼图pie展示数据的占比关系,适用于部分与整体的关系
散点图scatter展示两个变量之间的关系,适用于分布分析
雷达图radar展示多维数据,适用于多维度比较
树型图tree展示层级结构数据,适用于组织架构等
旭日图sunburst多层环形图,适用于层级数据占比分析
箱形图boxplot展示数据分布特征,适用于统计分析
热力图heatmap通过颜色深浅表示数据大小,适用于矩阵数据
地图map展示地理数据分布,适用于区域数据可视化
桑基图sankey展示数据流向和流量,适用于流程分析
漏斗图funnel展示数据转换情况,适用于转化率分析
仪表盘gauge展示单个数据指标,适用于进度展示

API参考

WitTkChart类

WitTkChart是库的主要类,用于创建和管理图表。

初始化参数
  • root: tkinter根窗口,默认为None,此时会创建一个新窗口
  • width: 图表宽度,默认为800
  • height: 图表高度,默认为600
  • chart_type: 图表类型,默认为’bar’
  • data: 图表数据,默认为None
  • categories: 数据分类标签,默认为None
  • title: 图表标题,默认为’图表标题’
主要方法
  • set_data(data, categories=None): 设置图表数据

    • data: 新的图表数据
    • categories: 新的数据分类标签,默认为None
  • set_chart_type(chart_type): 设置图表类型

    • chart_type: 新的图表类型
  • set_title(title): 设置图表标题

    • title: 新的图表标题
  • enable_dynamic_update(interval=1000): 启用图表动态更新功能

    • interval: 更新间隔(毫秒),默认为1000毫秒
  • disable_dynamic_update(): 禁用图表动态更新功能

  • start(): 启动图表应用的主循环

示例应用

WitTkChart提供了一个演示应用,展示了如何使用各种图表类型和功能:

python demo.py

演示应用包含两个部分:

  1. 基础图表演示:允许用户选择不同的图表类型,启用/禁用动态更新,以及更新和重置数据
  2. 多图表对比演示:同时展示多个不同类型的图表,方便对比分析

图表数据格式

不同类型的图表需要不同格式的数据:

  • 柱状图、折线图、树型图、旭日图、漏斗图:一维数组,如[65, 59, 80, 81, 56]
  • 饼图:一维数组,如[35, 25, 20, 15, 5]
  • 散点图:二维数组或元组列表,如[(10, 20), (30, 40), (50, 60)]
  • 雷达图:一维数组,需要与categories长度匹配
  • 箱形图:二维数组,每个子数组包含[min, q1, median, q3, max]
  • 热力图:二维数组,表示矩阵数据
  • 地图、桑基图:简化实现,接受一维数组
  • 仪表盘:包含单个数值的数组,如[68]

动态更新

WitTkChart支持图表的动态更新,可以通过以下方式启用:

# 启用动态更新,每1000毫秒更新一次
chart.enable_dynamic_update(1000)# 禁用动态更新
chart.disable_dynamic_update()

在实际应用中,您可能需要自定义动态更新的数据来源和逻辑,可以继承WitTkChart类并重写_dynamic_update方法。

自定义样式

虽然WitTkChart已经内置了Echarts风格的配色方案,但您也可以通过修改colors属性来自定义图表颜色:

# 自定义颜色
chart.colors = ['#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#FF00FF']
# 重新绘制图表以应用新的颜色
chart.draw_chart()

注意事项

  1. 部分图表类型(如地图、桑基图)在当前版本中是简化实现,如果需要更复杂的功能,可能需要进一步开发
  2. 图表的动态更新功能目前使用随机数据波动作为示例,实际应用中应替换为真实的数据来源
  3. 为了获得最佳显示效果,建议为不同类型的图表提供合适格式和范围的数据

许可证

WitTkChart是一个开源项目,使用MIT许可证。

贡献

欢迎对WitTkChart项目进行贡献,您可以通过以下方式参与:

  1. 报告bug或提出功能建议
  2. 改进代码质量或性能
  3. 添加新的图表类型或功能
  4. 完善文档和示例

联系

如果您有任何问题、建议或贡献,请联系我们:

  • 邮箱: forwt@qq.com,1346363063@qq.com
  • 项目仓库: https://gitee.com/WitOpenSource/wit-tk-chart
http://www.dtcms.com/a/406588.html

相关文章:

  • NIST公布后量子加密标准的第五种算法HQC
  • NetCore+Web客户端实现gRPC实时推送
  • Bugku-想蹭网先解开密码
  • 房屋管理系统开发流程
  • 新浪云怎么做淘宝客网站科技与狠活是什么意思
  • Vue3 v-slot 详解与示例
  • Agno 架构介绍:高性 Multi-agent 系统框架深度解析
  • 哪里有南宁网站建设天河区建设和水务局网站
  • Cadence Allegro 电子设计 快问快答--03.OrCAD颜色在哪里设置?
  • 自己做的网站怎么上排行榜设计广告专业制作
  • 网站页面下沉的特效代码山西seo推广系统
  • S7-200 SMART GET/PUT 指令深度解析:从参数到故障排查(S7 协议的客户端 - 服务器通信)下
  • 做国外网站翻译中国小说赚钱外贸推广软件有哪些
  • 二次封装科技风大屏element-ui弹窗
  • 【JavaScript 性能优化实战】第六篇:性能监控与自动化优化
  • 沃地泰双奖加冕2025农机大奖,以创新科技赋能智慧农业
  • Spring + Spring MVC + MyBatis
  • 酒店 深圳 网站制作如何找外包网站来做
  • 雪碧图动画实例
  • 总结之webpack
  • 义乌市建设局网站河南建设工程信息网官网洛阳至信阳省道
  • 实时云渲染云推流平台配置Redis、MySQL端口,解决中间件端口冲突
  • 网站建设会议记录增城住房和建设局网站
  • shell编程:sed - 流编辑器(6)
  • Kubernetes ConfigMap 深度解析:配置管理的核心实践Kubernetes Secret 深度解析:敏感配置的安全管理实践
  • 如何实现多人协同文档编辑器
  • 备案ip 查询网站wordpress 分类全文
  • 桂林市建设局网站网站建设招聘
  • 5G x 工业应用:探索德承工控机在5G工业应用中所扮演的关键角色
  • 队列+宽搜(BFS)-662.二叉树最大宽度-力扣(LeetCode)