清泛IT社区

标题: App Inventor 2 图表组件实战:5种图表类型+动态数据绑定,手把手做出专业级数据看板 [打印本页]

作者: App Inventor 2     时间: 昨天 16:42
标题: App Inventor 2 图表组件实战:5种图表类型+动态数据绑定,手把手做出专业级数据看板
App Inventor 2 图表组件实战:5种图表类型+动态数据绑定,手把手做出专业级数据看板

上周有个社群用户问我:"做了一堆数据采集,结果界面上全是一行行文字,有没有办法画成图表?"当然有——Chart组件就是答案。但很多人把它拖到界面上之后就懵了:属性一堆,数据怎么塞进去?折线图和面积图有什么区别?趋势线又是什么?这篇教程从零开始,带你做出一个真正能用的小型数据可视化应用。

你将学到

• Chart组件的5种图表类型及适用场景
• ChartData2D二维数据组件的数据绑定方式
• 从CSV文件、TinyDB、Web API三种数据源导入数据的完整流程
• 趋势线组件的4种拟合模型用法

基础概念

App Inventor 2 的图表体系由三个组件构成:

1. Chart(图表容器):负责画布渲染,决定图表类型(折线图、面积图、散点图、条形图、饼图)
2. ChartData2D(二维数据序列):挂载在Chart上,负责存储和管理x-y数据对,一条数据序列就是图表上的一组图形
3. Trendline(趋势线):可选组件,挂载在ChartData2D上,自动计算最佳拟合线

三者是嵌套关系:Chart → ChartData2D → Trendline。一个Chart可以挂多个ChartData2D(比如折线图上叠两条线),每个ChartData2D可以挂一个Trendline。

逐步实战

Step 1: 搭建图表界面

在Designer视图中:

1. 从左侧组件面板找到 图表(Chart),拖到Screen上
2. 设置 类型 属性(先送"折线图"),开启 启用网格启用图例
3. 从同一分类下拖一个 二维图表数据(ChartData2D) 到Chart内部

Step 2: 静态数据快速验证

在ChartData2D属性面板找到 元素来自键值对,填入:

1,120,2,135,3,128,4,142,5,155,6,148,7,160

格式是 x1,y1,x2,y2,... 逗号分隔。

Step 3: 从CSV文件导入数据

1. 拖入 数据文件(DataFile) 组件,上传CSV文件
2. 设置 数据源 为 DataFile1,x列填week,y列填amount

ChartData2D1.从数据文件导入(DataFile1, "week", "amount")

Step 4: 从TinyDB读取历史数据

调用 ChartData2D1.从微数据库导入(TinyDB1, "sales_history")

TinyDB数据格式:[[1, 120], [2, 135], [3, 128]]

Step 5: 从Web API实时拉取数据

当 Web1.收到文本(响应内容, 响应码):
  调用 ChartData2D1.从Web客户端导入(Web1, "week", "amount")

Step 6: 添加趋势线

拖入 趋势线(Trendline) 组件,模型支持4种:
线性:y = m·x + b
二次:y = a·x² + b·x + c
对数:y = a + b·ln(x)
指数:y = a·bˣ

开启 拓展 属性后趋势线会延伸做预测。R²越接近1说明拟合越好。

Step 7: 运行时动态操作数据

调用 ChartData2D1.添加数据点(8, 170)
调用 ChartData2D1.删除数据点(3, 128)
调用 ChartData2D1.清除数据序列()

数据点被点击时 事件返回坐标,可实现交互式查看。

常见坑点

1. 饼图的x值是文本不是数字——用"手机""电脑"做标签,数字做y值
2. 数据源绑定后旧数据不会清除——导入前先调用 清除数据序列()
3. 趋势线需要AI伴侣v2.70+——旧版本调试看不到效果
4. 条形图的x值会四舍五入——适合离散类别,不适合连续数据
5. 多个数据序列的颜色——通过ChartData2D的 颜色列表 属性设置

小结

图表组件的核心思路就是"容器+数据序列"的两层架构。Chart管外观,ChartData2D管数据,Trendline管分析。数据来源可以是静态CSV、本地TinyDB、远程API甚至传感器实时数据。把这些组合起来,你的App就有了专业的数据可视化能力。

完整文档参考:App Inventor 2 中文网 · 图表组件
入门教程推荐:使用柱状图和饼图收集数据





欢迎光临 清泛IT社区 (https://bbs.tsingfun.com/) Powered by Discuz! X3.3