清泛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