使用 OpenHarmony 图表进行数据挖掘的实操指南
一、整体流程与数据准备
二、图表选型与挖掘任务映射
| 挖掘任务 | 推荐图表 | 关键操作/要点 |
|---|---|---|
| 趋势与季节性 | 折线图 | 按日/周/月聚合,观察斜率变化与波动;叠加移动平均线以平滑噪声 |
| 分布与离群 | 散点图 | 二维散点展示 x–y 关系;用视觉属性(颜色/大小)编码第三维度;交互定位异常点 |
| 构成与占比 | 饼图/环形图 | 展示类别占比,配合排序与阈值高亮主要贡献项 |
| 多指标对比 | 柱状图/雷达图 | 类别对比用柱状图;多维能力对比用雷达图(归一化后更直观) |
| 峰值与尾部 | 榜单 + 箱线图/直方图 | 识别 TopK 峰值与长尾分布,辅助定位瓶颈与异常 |
三、端内可落地的分析范式
四、最小可行代码示例
// 数据点
class ChartDataPoint { date: Date; value: number; label?: string }
// 数据集(预计算统计)
class ChartDataSet {
name: string; points: ChartDataPoint[]; color: string
get maxValue(): number { return Math.max(...this.points.map(p => p.value)) }
get minValue(): number { return Math.min(...this.points.map(p => p.value)) }
get average(): number { return this.points.reduce((s, p) => s + p.value, 0) / this.points.length }
}
import { McPointChart, Options } from '@mcui/mccharts'
// 构造数据:x=耗时(ms), y=队列时间(min), num=满意度(0-5), name=标签
const seriesData = [
{ xVal: 3, yVal: 4, num: 4, name: 'A' },
{ xVal: 6, yVal: 4.2, num: 4.2, name: 'B' },
{ xVal: 7, yVal: 2, num: 2, name: 'C' },
{ xVal: 13, yVal: 1, num: 1, name: 'D' },
{ xVal: 15, yVal: 1.2, num: 1.2, name: 'E' }
]
const options: Options = {
legend: { show: true },
tooltip: { show: true },
xAxis: { name: '耗时(ms)' },
yAxis: { name: '排队时间(min)' },
series: [{
name: '相关分析',
color: '#06B683',
symbolSize: (d) => d.yVal * 6, // 用y值映射点大小
data: seriesData
}]
}
// ArkTS 布局中使用
Column() {
McPointChart({ options })
.width('100%')
.height(260)
}
.width('100%').height(300).backgroundColor('#FFFFFF').borderRadius(10)
// 伪代码:初始化折线图与坐标轴
import { LineChart, LineDataSet, EntryOhos, XAxis, YAxis, AxisDependency } from '@ohos/ohos_mpchart'
const values = new ArrayList<EntryOhos>()
for (let i = 0; i < 50; i++) {
values.add(new EntryOhos(i, Math.random() * 180 - 30))
}
const set = new LineDataSet(values, "步数")
set.setDrawFilled(true) // 面积填充
set.enableDashedLine(10, 5, 0)
const data = new LineData()
data.addDataSet(set)
lineChart.setData(data)
lineChart.invalidate() // 刷新
// 伪代码:更新数据后刷新图表
function updateChart(newPoints: ChartDataPoint[]) {
dataSet.points = newPoints
// 若使用第三方图表,调用其更新/重绘方法;若使用数据绑定/状态管理,触发UI重绘
chart.invalidate() // 或等效的刷新调用
}
上述示例分别展示了:基于 McCharts 的散点图用于相关性/分布洞察,基于 Ohos-MPChart 的折线图用于趋势展示,以及数据更新后的重绘方式。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。