# WitTkChart **Repository Path**: WitOpenSource/wit-tk-chart ## Basic Information - **Project Name**: WitTkChart - **Description**: WitTkChart是一个基于tkinter的Canvas的图表绘制的开源项目,提供丰富的可视化组件和高效的数据处理能力,适用于各类数据展示需求。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-09-24 - **Last Updated**: 2025-09-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WitTkChart WitTkChart是一个基于Python tkinter Canvas的开源图表可视化库,允许用户通过简单的API调用创建和更新多种精美的图表。该库参考了Echarts的配色风格,提供了丰富的图表类型和动态更新功能。 ![输入图片说明](demo_pic/bar.png) ![输入图片说明](demo_pic/mutil_demo.png) ## 功能特性 - **丰富的图表类型**:支持柱状图、折线图、饼图、散点图、雷达图、树型图、旭日图、箱形图、热力图、地图、桑基图、漏斗图、仪表盘等13种图表类型 - **Echarts风格配色**:采用了Echarts图表库的配色方案,使图表更加美观 - **动态更新**:支持图表的动态数据更新,可设置更新间隔 - **响应式设计**:图表会根据窗口大小自动调整 - **简单易用的API**:提供简洁明了的接口,方便用户快速上手 ## 安装说明 WitTkChart是一个纯Python库,仅依赖于Python标准库中的tkinter模块,因此不需要安装额外的第三方库。 1. 确保您的Python环境已安装(推荐Python 3.6或更高版本) 2. 克隆或下载WitTkChart仓库 3. 将wittkchart.py文件复制到您的项目目录中 ## 快速开始 以下是一个简单的示例,展示如何使用WitTkChart创建一个柱状图: ```python 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提供了一个演示应用,展示了如何使用各种图表类型和功能: ```bash 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支持图表的动态更新,可以通过以下方式启用: ```python # 启用动态更新,每1000毫秒更新一次 chart.enable_dynamic_update(1000) # 禁用动态更新 chart.disable_dynamic_update() ``` 在实际应用中,您可能需要自定义动态更新的数据来源和逻辑,可以继承WitTkChart类并重写`_dynamic_update`方法。 ## 自定义样式 虽然WitTkChart已经内置了Echarts风格的配色方案,但您也可以通过修改`colors`属性来自定义图表颜色: ```python # 自定义颜色 chart.colors = ['#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#FF00FF'] # 重新绘制图表以应用新的颜色 chart.draw_chart() ``` ## 注意事项 1. 部分图表类型(如地图、桑基图)在当前版本中是简化实现,如果需要更复杂的功能,可能需要进一步开发 2. 图表的动态更新功能目前使用随机数据波动作为示例,实际应用中应替换为真实的数据来源 3. 为了获得最佳显示效果,建议为不同类型的图表提供合适格式和范围的数据 ## 许可证 WitTkChart是一个开源项目,使用[MIT许可证](https://opensource.org/licenses/MIT)。 ## 贡献 欢迎对WitTkChart项目进行贡献,您可以通过以下方式参与: 1. 报告bug或提出功能建议 2. 改进代码质量或性能 3. 添加新的图表类型或功能 4. 完善文档和示例 ## 联系 如果您有任何问题、建议或贡献,请联系我们: - 邮箱: forwt@qq.com,1346363063@qq.com - 项目仓库: [https://gitee.com/WitOpenSource/wit-tk-chart](https://gitee.com/WitOpenSource/wit-tk-chart)