鸿蒙图表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

相关文章

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

一文详解Java Stream的sorted自定义排序

《一文详解JavaStream的sorted自定义排序》Javastream中的sorted方法是用于对流中的元素进行排序的方法,它可以接受一个comparator参数,用于指定排序规则,sorte... 目录一、sorted 操作的基础原理二、自定义排序的实现方式1. Comparator 接口的 Lam

SpringSecurity显示用户账号已被锁定的原因及解决方案

《SpringSecurity显示用户账号已被锁定的原因及解决方案》SpringSecurity中用户账号被锁定问题源于UserDetails接口方法返回值错误,解决方案是修正isAccountNon... 目录SpringSecurity显示用户账号已被锁定的解决方案1.问题出现前的工作2.问题出现原因各

华为鸿蒙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. 数据