Android使用MPAndroidChart 绘制折线图

效果图:

1.导入依赖

1.1在项目根目录下的build.gradle文件中添加代码(注意不是app下的build.gradle):

maven { url 'https://jitpack.io' }

1.2在app下的build.gradle中的依赖下添加:

implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'

(添加后记得同步)

2.编写代码

2.1在页面布局代码中添加:

<com.github.mikephil.charting.charts.LineChart
            android:id="@+id/chart"
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:layout_weight="1" />

2.2在Java文件中编写代码:

 private LineChart chart;
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_devices_demo);
        chart = findViewById(R.id.chart);
        initData();
}
private void initData(){
        // 准备数据
        List<Entry> entriesTemperature = new ArrayList<>();
        List<Entry> entriesHumidity = new ArrayList<>();
        List<Entry>  entriesPm = new ArrayList<>();
        entriesTemperature.add(new Entry(0,32));
        entriesTemperature.add(new Entry(1,33));
        entriesTemperature.add(new Entry(2,28));
        entriesTemperature.add(new Entry(3,30));
        entriesTemperature.add(new Entry(4,27));
        entriesTemperature.add(new Entry(5,31));

        entriesHumidity.add(new Entry(0,52));
        entriesHumidity.add(new Entry(1,60));
        entriesHumidity.add(new Entry(2,44));
        entriesHumidity.add(new Entry(3,55));
        entriesHumidity.add(new Entry(4,70));
        entriesHumidity.add(new Entry(5,65));

        entriesPm.add(new Entry(0,25));
        entriesPm.add(new Entry(1,36));
        entriesPm.add(new Entry(2,20));
        entriesPm.add(new Entry(3,65));
        entriesPm.add(new Entry(4,43));
        entriesPm.add(new Entry(5,20));
        // 创建数据集
        LineDataSet temperatureDataSet = new LineDataSet(entriesTemperature, "温度(℃)");
        LineDataSet humidityDataSet = new LineDataSet(entriesHumidity, "湿度(%)");
        LineDataSet pmDataSet = new LineDataSet(entriesPm, "PM2.5(μg/m³)");
//        // 设置温度数据集样式
        temperatureDataSet.setLineWidth(2.5f); // 设置线的宽度
        temperatureDataSet.setColor(Color.BLUE); // 设置线的颜色
        temperatureDataSet.setCircleColor(Color.BLUE); // 设置数据点的颜色(可选)
        temperatureDataSet.setCircleRadius(4f); // 设置数据点的半径(可选)
        temperatureDataSet.setFillColor(Color.parseColor("#009AD1")); // 设置填充颜色(可选)
        temperatureDataSet.setDrawFilled(true); // 启用填充(可选)
        temperatureDataSet.setDrawCircles(true); // 是否显示数据点(可选)
        temperatureDataSet.setDrawValues(true); // 是否显示数据值(可选)
        temperatureDataSet.setValueTextColor(Color.WHITE); // 设置数据值文本的颜色(如果显示的话)
//        // 设置湿度数据集样式
        humidityDataSet.setLineWidth(2.5f); // 设置线的宽度
        humidityDataSet.setColor(Color.GREEN); // 设置线的颜色
        humidityDataSet.setCircleColor(Color.GREEN); // 设置数据点的颜色(可选)
        humidityDataSet.setCircleRadius(4f); // 设置数据点的半径(可选)
        humidityDataSet.setFillColor(ColorTemplate.MATERIAL_COLORS[0]); // 设置填充颜色(可选)
        humidityDataSet.setDrawFilled(true); // 启用填充(可选)
        humidityDataSet.setDrawCircles(true); // 是否显示数据点(可选)
        humidityDataSet.setDrawValues(true); // 是否显示数据值(可选)
        humidityDataSet.setValueTextColor(Color.BLACK); // 设置数据值文本的颜色(如果显示的话)
        // 设置PM2.5数据集样式
        pmDataSet.setLineWidth(2.5f); // 设置线的宽度
        pmDataSet.setColor(Color.YELLOW); // 设置线的颜色
        pmDataSet.setCircleColor(Color.YELLOW); // 设置数据点的颜色(可选)
        pmDataSet.setCircleRadius(4f); // 设置数据点的半径(可选)
        pmDataSet.setFillColor(Color.parseColor("#FFFFA0")); // 设置填充颜色(可选)
        pmDataSet.setDrawFilled(true); // 启用填充(可选)
        pmDataSet.setDrawCircles(true); // 是否显示数据点(可选)
        pmDataSet.setDrawValues(true); // 是否显示数据值(可选)
        pmDataSet.setValueTextColor(Color.BLACK); // 设置数据值文本的颜色(如果显示的话)
        // 创建一个LineData对象,并将数据集集合传递给它
        LineData data = new LineData(temperatureDataSet,humidityDataSet,pmDataSet);
        // 将数据设置给图表
        chart.setData(data);
        // 刷新图表以显示数据
        chart.invalidate();
    }

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

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

相关文章

STM32单片机USART串口收发数据包

文章目录 1. 串口通信 1.1 串口初始化 1.2 库函数 2. 串口收发HEX数据包 2.1 Serial.c 2.2 Serial.h 2.3 main.c 3. 串口收发文本数据包 3.1 Serial.c 3.2 Serial.h 3.3 main.c​​​​​​​ 1. 串口通信 对于串口通信的详细​​​​​​​解析可以看下面这篇文章…

生产实习Day7 ---- Hive介绍

文章目录 概要整体架构流程Hive数据库操作建表语法表分类 概要 Hive是基于Hadoop的数据仓库工具。可以用于存储在Hadoop集群中的HDFS文件数据集进行数据整理、特殊查询和分析处理。Hive提供了类似于关系型数据库SQL语言的HiveQL工具&#xff0c;通过HQL&#xff08;HiveQL&…

用VPS部署聊天机器人有哪些优势?

VPS足以帮助您将人工智能 (AI) 的功能无缝融入聊天机器人并增强客户支持。聊天机器人已迅速成为改善用户体验的首选解决方案&#xff0c;因为它们全天候在线且可编程回答各种问题。 聊天机器人在客户支持方面的作用不容置疑。但所有出色的解决方案都需要出色的网络托管。 VPS…

从零到发布:npm插件包终极指南

在JavaScript和Node.js的生态系统中&#xff0c;npm&#xff08;Node Package Manager&#xff09;是最重要的包管理工具之一。通过npm&#xff0c;开发者可以共享代码、复用他人的工作成果以及协作开发。本指南将详细介绍如何通过npm发布自己的插件包&#xff0c;以便其他开发…

力扣372. 超级次方

Problem: 372. 超级次方 文章目录 题目描述思路复杂度Code 题目描述 思路 1.处理数组指数&#xff1a;如下图可以将其转换为一个递归的操作 2.处理 mod 运算:对于模运算我们有公式&#xff1a; ( a b ) % k ( a % k ) ( b % k ) % k (a \times b) \% k (a \% k) \times (b…

如何利用数据仓库进行业务分析:一名大数据工程师的视角

在大数据时代&#xff0c;数据的有效利用对企业的成功至关重要。 本文将基于上面的流程图&#xff0c;详细介绍如何利用数据仓库进行业务分析&#xff0c;并提供实际的例子和代码演示&#xff0c;以帮助读者更好地理解和应用相关技术。 数据仓库的基本流程 上图展示了一个典…

PointCloudLib 点云边缘点提取 C++版本

0.实现效果 1.算法原理 PCL(Point Cloud Library)中获取点云边界的算法主要基于点云数据的几何特征和法向量信息。以下是对该算法的详细解释,按照清晰的格式进行归纳: 算法概述 PCL中的点云边界提取算法主要用于从3D点云数据中识别并提取出位于物体边界上的点。这些边界…

五种主流数据库连接池的比较和分析(从零入门)

数据库连接池&#xff08;Database Connection Pool&#xff09;是现代应用程序中至关重要的组件。它通过管理一组数据库连接的复用&#xff0c;极大地提升了应用程序的性能和效率。在没有连接池的情况下&#xff0c;每个数据库请求都需要打开和关闭数据库连接&#xff0c;这不…

【C++】关于代码编译自动更新版本的问题

在写代码的时候&#xff0c;总是需要添加一个版本号&#xff0c;用于后续的版本管理 我常遇到的一个问题是&#xff0c;开发过程中&#xff0c;不一定会记得这件事情&#xff0c;导致有时候会出现同样的版本 于是希望有一个方式&#xff0c;能在编译代码的时候自动生成一个版…

【机器学习 复习】第11章 神经网络与深度学习(重中之重)

一、概念 1.神经元模型 &#xff08;1&#xff09;神经网络的基本组成单位 &#xff08;2&#xff09;生物上&#xff0c;每个神经元通过树突接受来自其他被激活神经元的信息&#xff0c;通过轴突释放出来的化学递质改变当前神经元内的电位。当神经元内的电位累计到一个水平时…

从同—视角理解扩散模型(Understanding Diffusion Models A Unified Perspective)

从同—视角理解扩散模型 Understanding Diffusion Models A Unified Perspective【全公式推导】【免费视频讲解】 B站视频讲解 视频的论文笔记 从同一视角理解扩散模型【视频讲解笔记】 配合视频讲解的同步笔记。 整个系列完整的论文笔记内容如下&#xff0c;仅为了不用—一回复…

在Linux下使用CMake加载自定义路径第三方库的指南

CMake是一个强大的跨平台构建系统&#xff0c;广泛应用于C项目中。它不仅能够处理标准的构建过程&#xff0c;还可以灵活地集成各种第三方库&#xff0c;包括自定义路径的库、已编译的共享库&#xff08;.so 文件&#xff09;&#xff0c;以及仅包含头文件的库&#xff08;如Ei…

AlphaMissense:预测错义变异的致病性

错义变异或错义变体&#xff08;missense variation或missense variants&#xff09;是改变蛋白质氨基酸序列的遗传变异。致病性错义变异会严重破坏蛋白质功能&#xff0c;在目前观察到的400多万个错义变异中&#xff0c;只有2%在临床上被确定为致病或良性。对剩下的类型不明的…

关于使用绿联 USB-A转RJ45 2.5G网卡提速的解决问题

问题 网络下载速率低 我的自带网卡是 I219v 在嵌入了2.5G网络后一直无法到达1.5G以上。 平均测速300~500M 解决方案 更新了USB的网卡驱动 禁用了 I219-V的驱动。测速即可 USB下载地址 https://download.csdn.net/download/qq_28198181/89468806

基于SpringBoot+Vue二手交易平台设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还…

银河麒麟V10安装docker和docker-compose

1. 说明 系统镜像使用的是Kylin-Server-V10-SP3-2403-Release-20240426-x86_64.iso如果是在VMware中安装这个系统&#xff0c;需选择Ubuntu&#xff0c;如果选Centos会有问题。 尝试使用在线方式安装docker&#xff0c;报了很多错误&#xff0c;比较麻烦&#xff0c;建议使用离…

Kubernetes集群UI及主机资源监控

Kubernetes集群UI及主机资源监控 1. Kubernetes dashboard作用 通过dashboard能够直观了解Kubernetes集群中运行的资源对象,可以直接管理(创建、删除、重启等操作)资源对象 2. 获取Kubernetes dashboard资源清单文件 下载kubernetes-dashboard配置文件cd /data/k8s-work wg…

【CV炼丹师勇闯力扣训练营 Day13:§6二叉树1】

CV炼丹师勇闯力扣训练营 代码随想录算法训练营第13天 二叉树的递归遍历 二叉树的迭代遍历、统一迭代 二叉树的层序遍历 一、二叉树的递归遍历&#xff08;深度优先搜索&#xff09; 【递归步骤】 1.确定递归函数的参数和返回值&#xff1a;确定哪些参数是递归的过程中需要处理…

【仿真建模-anylogic】Network代码解析

Author&#xff1a;赵志乾 Date&#xff1a;2024-06-22 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 1. 类图 2. 代码解析 //************************核心字段************************* // Network所属的level private transient Leve…

FFmpeg+javacpp+javacv使用

FFmpegjavacppjavacv使用 Bytedeco官网案例1、导入opencv、ffmpeg依赖包2、FFmpeg 数据结构2.1 AVFormatContext 格式化I/O上下文2.1.1 metadata2.1.2 Duration、start、bitrate等其他信息2.1.3 dump信息 Bytedeco GitHub&#xff1a;javacpp Bytedeco官网案例 FFmpeg – [示例…