当前位置:首页>鸿蒙APP>鸿蒙开发:一个简单的散点图组件

鸿蒙开发:一个简单的散点图组件

  • 2026-09-29 09:42:49
鸿蒙开发:一个简单的散点图组件
HarmonyOS干货铺:只分享鸿蒙相关的精华技术文章,千帆起航,共筑鸿蒙!一个服务于鸿蒙开发者的应用【鸿元极客】已经上架,欢迎大家去应用市场搜索下载体验。

前言

最近一段时间,都在拓展一些常见的组件开发,目前陆陆续续,已经推出了曲线底部导航组件,圆形动画菜单组件,滑块验证组件,星级评分组件,饼状图组件,App应用打印组件等,今天带来的依然是一个自定义组件,一个简单的散点图组件,当然了,如果大家需要什么组件,可以留言,尽可能的满足到大家。

我们先看一下组件的效果:

动态效果如下:

散点图和饼状图类似,都是作为数据可视化领域中的极具代表性的图表,可以说凭借直观、简洁的呈现方式,在多行业、多场景中发挥着不可替代的作用,其价值在于揭示数据背后的关联规律、分布特征及异常情况,为当局的决策者提供精准的数据支撑,其使用的场景也是司空见惯,常见于金融,商业数据分析等领域,它可以直观的展示比如股票收益率与波动率的关系,汇率变动与进出口数据的对应情况,产品销量与定价的关联趋势等等场景。

可以说,散点图使用的场景还是很多的,目前的组件已经上传到了中心仓库,大家可以进行选择使用,地址如下:

https://ohpm.openharmony.cn/#/cn/detail/@abner%2Fscatter

目前功能

1、支持单一颜色配置和多种颜色配置。

2、支持自绘制方格和不带方格两种效果。

3、支持数据动态调整。

4、所有属性均可自定义实现。

快速使用

方式一:在Terminal窗口中,执行如下命令安装三方包,DevEco Studio会自动在工程的oh-package.json5中自动添加三方包依赖。

建议:在使用的模块路径下进行执行命令。

ohpm install @abner/scatter

方式二:在需要的模块中的oh-package.json5中设置三方包依赖,配置示例如下:

"dependencies": { "@abner/scatter": "^1.0.0"}

代码使用

简单使用

ScatterChartView({  scatterChartData: this.scatterChartData})  .width("100%")  .height(300)

带网格

ScatterChartView({  scatterChartData: this.scatterChartData,  chartType: ScatterChartType.grid})  .width("100%")  .height(300)

完整Demo

import { ScatterChartData, ScatterChartType, ScatterChartView } from'@abner/scatter'import { ActionBar } from'../../view/ActionBar'/** *AUTHOR:AbnerMing *DATE:2026/1/17 *INTRODUCE:散点图 */@Entry@ComponentV2  struct ScatterChartPage {private colorArray: string[] = ['#3b82f6', '#ef4444', '#10b981', '#f59e0b','#8b5cf6', '#06b6d4', '#6b7280', '#111827'    ];private singleColor: string = '#3b82f6';@Local useMultiColor: boolean = true@Local scatterChartData: ScatterChartData[] = []    aboutToAppear(): void {this.generateRandomPoints(10)    }    build() {      Column() {        ActionBar({ title: "散点图" })        ScatterChartView({          scatterChartData: this.scatterChartData        })          .width("100%")          .height(300)        ScatterChartView({          scatterChartData: this.scatterChartData,          chartType: ScatterChartType.grid        })          .width("100%")          .height(300)        Row() {          Button("随机数据")            .onClick(() => {this.generateRandomPoints(10)            })          Button("单色")            .onClick(() => {this.useMultiColor = falsethis.generateRandomPoints(10)            })            .margin({ left: 10 })          Button("多色")            .margin({ left: 10 })            .onClick(() => {this.useMultiColor = truethis.generateRandomPoints(10)            })        }.margin({ top: 10 })      }.width("100%")        .height("100%")    }// 生成随机数据点private generateRandomPoints(count: number) {this.scatterChartData = [];for (let i = 0; i < count; i++) {this.addRandomPoint();      }    }// 添加单个随机数据点private addRandomPoint() {const x = Math.random() * (100 - 0);const y = Math.random() * (100 - 0);const color =this.useMultiColor ? this.colorArray[Math.floor(Math.random() * this.colorArray.length)] : this.singleColor;this.scatterChartData.push({        x: parseFloat(x.toFixed(2)),        y: parseFloat(y.toFixed(2)),        color: color      })    }  }

属性介绍

常见属性配置如下:

相关总结

散点图作为数据可视化的重要工具,在数据关联分析、分布展示中具有独特价值,目前1.0.0版本仅仅实现了数据的展示,在1.0.1版本中,会增加散点的点击事件,有需要的同学可以关注。

最新文章

随机文章