|
|
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 中文网 · 图表组件
入门教程推荐:使用柱状图和饼图收集数据
|
|