当前位置: 首页 > article >正文

鸿蒙绘制折线图基金走势图

鉴于鸿蒙下一代剥离aosp,对于小公司而言,要么用h5重构,要么等大厂完善工具、等华为出转换工具后跟进,用鸿蒙重新开发一套代码对于一般公司而言成本会大幅增加。但对于广大开发者来说,暂且不论未来鸿蒙发展如何,但是对新技术还是有必要学一学的。

下文将用鸿蒙 arkts (compileSdkVersion:9)学习绘制折线图、基金走势图。

项目地址:https://gitee.com/liu_520/harmony_line_chart

1、基础一条线的折线图
2、多条线的折线图
3、支持贝塞尔曲线平滑线
4、支持渐变面积图(仅基础折线图,多条线对比图请参考基础折线图)
5、支持从左到右动态绘制
6、自定义横纵坐标展示多少个标线
7、支持坐标点的绘制
8、支持数据中有null的情况(请使用者自行兼容)

具体的参数

  @State xTicks: String[] = [] // x轴显示的刻度
  @State yTicks: number[] = [] // y轴显示的刻度值
  @Prop canvasWidth: number // 画布的宽度
  private canvasHeight = 300 // 画布的高度
  private yWidth = 20 // y轴的文字宽度
  private xHeight = 20 // X轴的文字高度
  private points: Point[] = [] // 原始数量大小
  private sps: any[] = [] // 平滑曲线的数量
  private grayColor = '#ccc'
  @State minY: number = this.xHeight // 对应的是y轴最小值
  @Prop xGridCount: number // x轴网格线的数量
  @Prop yGridCount: number // y轴网格线的数量
  private drawInterval: number = -1; // 定时器
  @State startIndex: number = 0 // 动画出现点
  @State useAnimate: boolean = false // 是否使用动画
  @State animateCount: number = 2 // 使用动画时 一个间隔时间内绘制的点或者线的数量
  @State animateTimeGap: number = 100 // 使用动画时的时间间隔
  @Prop smooth: boolean // 是否使用平滑曲线
  @State scaleRatio: number = 2 // 缩放比例 最小1 最大
  @State lastPoint: number = -1 // 点击了图表对应的x轴的位置 用于画垂直虚线
  @Link clickPoint: PointItem
  @State showAera: boolean = false // 是否显示面积图
  @State aeraYBase: number = 0 // 面积图的基准,默认是最小值

  private settings: RenderingContextSettings = new RenderingContextSettings(true)
  private ctx: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
  private gap = (this.canvasWidth - this.yWidth) / data.length // 两个点之间的宽度 用来判断点击的范围是否在某个点内

平滑曲线.png

有null数据的折线图.png

有null数据的折线图.png
对比折线图.png

没有点的折线图.png


http://www.kler.cn/news/155094.html

相关文章:

  • 一缕青丝寄相思
  • 万宾科技第四代可燃气体监测仪的作用
  • C-语言每日刷题
  • 测试类运行失败:TestEngine with ID ‘junit-jupiter‘ failed to discover tests
  • docker+jmeter+influxdb+granfana
  • 力扣labuladong一刷day25天
  • MacDroid Pro for Mac – 安卓设备文件传输助手,实现无缝连接与传输!
  • 整数分频,奇偶分频。
  • 【BVITS2】配置debug记录——Bert-VITS2-Integration-Pack-v2.0.2
  • 第十节HarmonyOS 使用资源引用类型
  • 在 TypeScript 中,interface、implements 和 extends 的作用
  • WT2003H语音芯片系列:通过bin文件实现板载语音更新,支持宽范围音频码率
  • CC++枚举类型与类型定义(typedef)
  • 【MySql】悲观锁和乐观锁的介绍
  • Micropython for QNX编译过程
  • Linux下配置邮箱客户端MUTT,整合msmtp + procmail + fetchmail
  • idea通过remote远程调试云服务器
  • 2015年五一杯数学建模C题生态文明建设评价问题解题全过程文档及程序
  • 分享一些Git的常用命令
  • 【Python】Gym的使用
  • OpenTelemetry系列 - 第2篇 Java端接入OpenTelemetry
  • ctfhub技能树_web_web前置技能_HTTP
  • Python海绵宝宝
  • 【SpringMVC】Spring Web MVC入门(一)
  • 公平锁和非公平锁以及他们的实现原理是什么
  • react-route-dom 实现简单的嵌套路由
  • linux如何杀死进程_kill
  • 吸积效应:为什么接口会越来越臃肿?我们从一个接口说起
  • vue项目node-sass^4.14.1 python gyp 报错解决办法
  • react-native实践日记--5.ReactNative 项目版本升级,0.61到0.72升级的问题记录(一)