鸿蒙图表MPChart自定义样式(五)左y轴显示数值,右y轴显示百分比

2024-09-06 15:52

本文主要是介绍鸿蒙图表MPChart自定义样式(五)左y轴显示数值,右y轴显示百分比,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

左y轴数值不变,右y轴改成百分比,需要通过自定义RightAxisFormatter实现IAxisValueFormatter接口,将右y轴的数值改成百分比文本,RightAxisFormatter类如下:

class RightAxisFormatter implements IAxisValueFormatter {maxNumber: number = 0;constructor(maxNumber: number) {this.maxNumber = maxNumber;}getFormattedValue(value: number, axis: AxisBase): string {switch (value) {case this.maxNumber:return "100%";case this.maxNumber * 4 / 5:return "80%";case this.maxNumber * 3 / 5:return "60%";case this.maxNumber * 2 / 5:return "40%";case this.maxNumber * 1 / 5:return "20%";case 0:return "0%";}return "";}
}

使用方法如下:

//设置标签文本转换器
rightAxis?.setValueFormatter(new RightAxisFormatter(this.maxNumber));

完整代码如下:

import {JArrayList,EntryOhos,ILineDataSet,LineData,LineChart,LineChartModel,Mode,LineDataSet,XAxisPosition,IAxisValueFormatter,AxisBase,
} from '@ohos/mpchart';class RightAxisFormatter implements IAxisValueFormatter {maxNumber: number = 0;constructor(maxNumber: number) {this.maxNumber = maxNumber;}getFormattedValue(value: number, axis: AxisBase): string {switch (value) {case this.maxNumber:return "100%";case this.maxNumber * 4 / 5:return "80%";case this.maxNumber * 3 / 5:return "60%";case this.maxNumber * 2 / 5:return "40%";case this.maxNumber * 1 / 5:return "20%";case 0:return "0%";}return "";}
}@Entry
@ComponentV2
struct LeftRightAxisPage {private model: LineChartModel = new LineChartModel();minNumber: number = 0;maxNumber: number = 500;@Local dataReady: boolean = false;setData() {// 创建一个 JArrayList 对象,用于存储 EntryOhos 类型的数据let values: JArrayList<EntryOhos> = new JArrayList<EntryOhos>();// 循环生成 1 到 20 的随机数据,并添加到 values 中for (let i = 1; i <= 20; i++) {values.add(new EntryOhos(i, Math.random() * 500));}// 创建 LineDataSet 对象,使用 values 数据,并设置数据集的名称为 'DataSet'let dataSet = new LineDataSet(values, 'DataSet');dataSet.setMode(Mode.CUBIC_BEZIER);dataSet.setDrawCircles(false);let dataSetList: JArrayList<ILineDataSet> = new JArrayList<ILineDataSet>();dataSetList.add(dataSet);// 创建 LineData 对象,使用 dataSetList数据,并将其传递给modellet lineData: LineData = new LineData(dataSetList);let leftAxis = this.model.getAxisLeft();let rightAxis = this.model.getAxisRight();leftAxis?.setAxisMinimum(this.minNumber);leftAxis?.setAxisMaximum(this.maxNumber);//设置有6个标签leftAxis?.setLabelCount(6, true);rightAxis?.setAxisMinimum(this.minNumber);rightAxis?.setAxisMaximum(this.maxNumber);//设置有6个标签rightAxis?.setLabelCount(6, true);//设置标签文本转换器rightAxis?.setValueFormatter(new RightAxisFormatter(this.maxNumber));this.model.getXAxis()?.setPosition(XAxisPosition.BOTTOM);this.model.getDescription()?.setEnabled(false);this.model?.setData(lineData);this.dataReady = true;}aboutToAppear() {// 模拟网络请求,延时1秒获取数据setTimeout(() => {this.setData()}, 1000);}build() {Column() {if (this.dataReady) {LineChart({ model: this.model }).width('100%').height('50%').backgroundColor(Color.White)} else {LoadingProgress().color(Color.Blue)}}}
}

这篇关于鸿蒙图表MPChart自定义样式(五)左y轴显示数值,右y轴显示百分比的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1142454

相关文章

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

如何自定义一个log适配器starter

《如何自定义一个log适配器starter》:本文主要介绍如何自定义一个log适配器starter的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求Starter 项目目录结构pom.XML 配置LogInitializer实现MDCInterceptor

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

spring-gateway filters添加自定义过滤器实现流程分析(可插拔)

《spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔)》:本文主要介绍spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔),本文通过实例图... 目录需求背景需求拆解设计流程及作用域逻辑处理代码逻辑需求背景公司要求,通过公司网络代理访问的请求需要做请

idea中project的显示问题及解决

《idea中project的显示问题及解决》:本文主要介绍idea中project的显示问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录idea中project的显示问题清除配置重China编程新生成配置总结idea中project的显示问题新建空的pr

使用Vue-ECharts实现数据可视化图表功能

《使用Vue-ECharts实现数据可视化图表功能》在前端开发中,经常会遇到需要展示数据可视化的需求,比如柱状图、折线图、饼图等,这类需求不仅要求我们准确地将数据呈现出来,还需要兼顾美观与交互体验,所... 目录前言为什么选择 vue-ECharts?1. 基于 ECharts,功能强大2. 更符合 Vue

CSS3 布局样式及其应用举例

《CSS3布局样式及其应用举例》CSS3的布局特性为前端开发者提供了无限可能,无论是Flexbox的一维布局还是Grid的二维布局,它们都能够帮助开发者以更清晰、简洁的方式实现复杂的网页布局,本文给... 目录深入探讨 css3 布局样式及其应用引言一、CSS布局的历史与发展1.1 早期布局的局限性1.2