关于安卓MPAnroidChart开发(一)直方图分组坑

背景

安卓开发一个图表显示数据,内容就是对直方图进行分组显示,大概示例如下:
在这里插入图片描述

开发环境

win10,as4+,jdk8+

开发

这里直接说重点。乱七八糟的就掠过了,最后会放出所有相关源码以及封装好的类。

如果对单组的直方图,只需要设置

                chart.xAxis.granularity = 1f

即可坐标对齐,放大缩小都可以完美适应。

但是,如果对于分组的直方图,那就要做一下的适配了
                chart.xAxis.axisMinimum = 0f
                chart.xAxis.granularity = 1f
                chart.xAxis.axisMaximum =
                    (chart.barData.getGroupWidth(groupSpace, barSpace) * dataSize)
                chart.xAxis.setCenterAxisLabels(true)
                chart.groupBars(0f, groupSpace, barSpace)

其中:barSpace 是直方图之间的距离,groupSpace是分组的距离,这有个公式,就是(barwidth+barSpace) * groupSize + groupSpace = 1
这个公式,必定要记住,不然会出现,分组以后的数据,放大后坐标乱七八糟,这种坑,百度一搜一个没有,最后是看别人的demo发现的。

这个坑足足浪费了两个小时!!!!

第二,如果所直方图要做成单组和分组共用,那么就要进行特殊的适配,核心代码如下:

            if (singleData) {
                chart.xAxis.setCenterAxisLabels(false)
                chart.xAxis.resetAxisMaximum()
                chart.xAxis.resetAxisMinimum()
                chart.xAxis.granularity = 1f
            } else {
                chart.xAxis.axisMinimum = 0f
                chart.xAxis.granularity = 1f
                chart.xAxis.axisMaximum =
                    (chart.barData.getGroupWidth(groupSpace, barSpace) * dataSize)
                chart.xAxis.setCenterAxisLabels(true)
                chart.groupBars(0f, groupSpace, barSpace)
            }

可以看到,如果是单组数据,是需要重置某些变量的。

上述就是全部相关的数据,最后放出完整的demo链接:
链接:https://pan.baidu.com/s/1Snyjo-kr_VoLMnXx4E5RRw
提取码:i8q9
在这里插入图片描述
that’s all----------------------------------------------------------------------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/477510.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

手机抓包也太简单好玩了吧!

我们选择Charles来作为抓包工具,本文将从0到1讲解从电脑端抓包到手机端抓包。 Charles是一款被广泛使用的网络抓包工具,它可以用来监控和调试通过HTTP和HTTPS协议发送和接收的所有网络请求和响应。Charles通常用于网页和网络应用的开发过程中&#xff0…

代码随想录 Day-23

力扣题目 406.根据身高重建队列 思路 这里可以看出来是有两个维度考虑,和力扣题目 135.分发糖果(可以看我day-22的文章) 有点类似。 因此遇到这种两个维度权衡的时候,一定是先考虑一个维度再按照另一个维度来重新考虑排序。 两…

YOLOv9有效改进|使用iRMB与RepNCSPELAN4融合

专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,助力高效涨点!!! 一、改进点介绍 iRMB是CVPR2023即插即用的到残差注意力机制。 本文使用iRMB与RepNCSPELAN4进行融合 二、iRMB-RepNCSPELAN4模块详解 2.1 模块简介 这…

Codeforces Round 935 (Div. 3)A~E

A. Setting up Camp 题目分析: 有三种人,内向、外向、综合,内向必须独自一个帐篷,外向必须3个人一个帐篷,综合介于1~3人一个帐篷,我们发现非法情况只会存在外向的人凑不成3个人一个帐篷的情况,因外向不够可…

AI视频激光综合驱鸟装置:全自动、大范围驱鸟 | 真驱鸟科技

在电力系统中,鸟害事故已成为一个不容忽视的问题,直接威胁到电网的正常运行。但鸟类拥有极强的环境适应能力,它们能够在各种环境中生存和繁衍。这种强大的适应性使得传统的单一功能驱鸟器,在面对鸟类时显得力不从心,无…

用OceanBase binlog service 轻松进行数据回滚

背景 在日常的数据库运维过程中,难免会遭遇数据误操作的情形,比如因疏忽而执行了非预期的delete或update操作,这时就需要进行数据回滚。如果在OceanBase中启用了回收站功能,并设置了合适的undo_retention,那么我们可以…

【Frida】10_用鼠标自动标记棋盘上的雷区(一键过关)

🛫 系列文章导航 【Frida】 00_简单介绍和使用 https://blog.csdn.net/kinghzking/article/details/123225580【Frida】 01_食用指南 https://blog.csdn.net/kinghzking/article/details/126849567【Frida】02_常见API示例及功能函数封装(snippets&#…

上海亚商投顾:沪指窄幅震荡微跌 低空经济概念股持续爆发

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 三大指数昨日高开后回落,整体呈现小幅调整走势。低空经济概念持续爆发,永悦科技8连板&…

html5cssjs代码 032 边框属性示例

html5&css&js代码 032 边框属性示例 一、代码二、解释 该HTML文件定义了一个网页页面&#xff0c;主要介绍了HTML5中CSS边框属性的用法。 一、代码 <!DOCTYPE html> <html lang"zh-cn"><head><title>编程笔记 html5&css&j…

银河麒麟系统安装设备类型选择lvm简单模式之后,数据写入导致失败导致系统重启无法正常加载

银河麒麟系统安装设备类型选择lvm简单模式之后&#xff0c;数据写入导致失败导致系统重启无法正常加载 一 系统环境1.1 系统版本信息1.2 通过镜像安装的过程中选择设备类型选择的是lvm简单模式 二 问题描述三 问题修复过程3.1 挂载ISO镜像&#xff0c;引导到字符终端界面3.2 修…

什么是ip公网?

一、概念和作用 在计算机网络中&#xff0c;IP&#xff08;Internet Protocol&#xff09;是一种网络协议&#xff0c;用于将数据包从源主机传输到目标主机。而公网指的是能够被所有人访问的网络&#xff0c;与之相对应的是私有网络。IP公网即指能够在公共互联网中被访问和使用…

关系型数据库mysql(3)索引

目录 一.索引的概念 二.索引的作用 三.创建索引的原则依据 四.索引的分类 五.索引的创建 5.1 普通索引 5.1.1 直接创建索引 5.1.2 修改表方式创建 5.1.3 创建表的时候指定索引 5.2 唯一索引 5.2.1 直接创建唯一索引 5.2.2 修改表方式创建 5.2.3 创建表的时候指…

HTTP协议1

官网学习网址&#xff1a;HTTP | MDN 常规信息 常规请求头信息&#xff1a; 状态码&#xff1a; 200 正常响应 404 未找到资源 500 服务端一场的 3** 重定向 资源缓存 响应头信息&#xff1a; 客户端允许的请求方法类型 Access-Control-Allow-Methods: GET, POST, PUT, DELET…

1.3 Python是什么

Python是什么&#xff0c;Python简介 Python 是荷兰人 Guido van Rossum &#xff08;吉多范罗苏姆&#xff0c;中国程序员称其为“龟叔”&#xff09;在 1990 年初开发的一种解释型编程语言。 图1&#xff1a;Python 的标志&#xff08;Logo&#xff09; Python 的诞生是极具…

几个常用的控件(2)

目录 一、单选按钮Radiobutton和RadioButtonList 1、Radiobutton控件 &#xff08;1&#xff09;button控制方式 &#xff08;2&#xff09;Radiobutton控制方式 2、RadiobuttonList控件 二、列表框ListBox和下拉列表DropdownList 1、ListBox 2、DropdownList 三、面板…

macOS 通过 MacPorts 正确安装 MySQL 同时解决无法连接问题

如果你通过 sudo port install 命令正常安装了 MySQL&#xff0c;再通过 sudo port load 命令启动了 MySQL Server&#xff0c;此刻却发现使用 Navicat 之类的 GUI 软件无法连接&#xff0c;始终返回无法连接到 127.0.0.1 服务器。这是一个小坑&#xff0c;因为他默认使用了 So…

(day 15)JavaScript学习笔记(对象3)

概述 这是我的学习笔记&#xff0c;记录了JavaScript的学习过程。在写博客的时候我会尽量详尽的记录每个知识点。如果你完全没接触过JavaScript&#xff0c;那么这一系列的学习笔记可能会对你有所帮助。 今天继续学习对象&#xff0c;主要是Object.create()、原型链、修改原型指…

IPv6介绍

IPv6&#xff08;互联网协议版本6&#xff09;是用于互联网的最新网络层通信协议&#xff0c;旨在解决IPv4地址耗尽的问题&#xff0c;并提供了多项改进。IPv6于1998年由互联网工程任务组&#xff08;IETF&#xff09;标准化&#xff0c;作为IPv4的后继者。下面是IPv6的一些详细…

Linux - 应用层HTTPS、传输层TCP/IP模型中典型协议解析

目录 应用层&#xff1a;自定制协议实例 HTTP协议首行头部空行正文http服务器的搭建 HTTPS协议 传输层UDP协议TCP协议 应用层&#xff1a; 应用层负责应用程序之间的沟通—程序员自己定义数据的组织格式 应用层协议&#xff1a;如何将多个数据对象组织成为一个二进制数据串进行…

【文末附gpt升级4.0方案】英特尔AI PC的局限性是什么

为什么要推出英特尔AI PC&#xff1f; 英特尔AI PC的推出无疑为AIGC&#xff08;生成式人工智能&#xff09;的未来发展开启了一扇新的大门。这种新型的计算机平台&#xff0c;通过集成先进的硬件技术和优化的软件算法&#xff0c;为AIGC提供了更为强大和高效的支持&#xff0…