1. 程式人生 > >Android 實時曲線圖/折線圖

Android 實時曲線圖/折線圖

基於開源框架AChartEnginee繪製圖表表格,實現顯示資料折線圖,對比功能。效果圖如下:


新建工程

通過Android studio新建專案,新增achartenginee.jar依賴。點選下載jar

初始化圖表

資料集

根據需求設定多條曲線,一條曲線對應一個XYSeries例項

	series = new XYSeries(title);
		series2 = new XYSeries("123");
		// 建立一個數據集的例項,這個資料集將被用來建立圖表
		mDataset = new XYMultipleSeriesDataset();
		// 將點集新增到這個資料集中
		mDataset.addSeries(series);
		mDataset.addSeries(series2);

屬性樣式

設定曲線樣式,這裡要注意,一條曲線執行一次如下設定,以順序相互對應,否則將會報錯:Datasetand renderer should not be null  andshould have the same number of series

XYSeriesRenderer r = new XYSeriesRenderer();
		// 設定圖表中曲線本身的樣式,包括顏色、點的大小以及線的粗細等
		r.setColor(color);
		r.setPointStyle(style);
		r.setFillPoints(fill);
		r.setLineWidth(3);
		renderer.addSeriesRenderer(r);

設定圖表樣式
// 有關對圖表的渲染可參看api文件
		renderer.setApplyBackgroundColor(true);
		renderer.setBackgroundColor(getResources().getColor(
				R.color.black));
		renderer.setChartTitle(title);
		renderer.setChartTitleTextSize(20);
		renderer.setLabelsTextSize(19);// 設定座標軸標籤文字的大小
		renderer.setXTitle(xTitle);
		renderer.setYTitle(yTitle);
		renderer.setXAxisMin(xMin);
		renderer.setXAxisMax(xMax);
		renderer.setYAxisMin(yMin);
		renderer.setYAxisMax(yMax);
		//renderer.setYAxisAlign(Align.RIGHT, 0);//用來調整Y軸放置的位置,表示將第一條Y軸放在右側
		renderer.setAxesColor(axesColor);
		renderer.setLabelsColor(labelsColor);
		renderer.setShowGrid(true);
		renderer.setGridColor(Color.GRAY);
		renderer.setXLabels(10);//若不想顯示X標籤刻度,設定為0 即可
		renderer.setYLabels(10);
		renderer.setLabelsTextSize(18);// 設定座標軸標籤文字的大小
		renderer.setXLabelsColor(labelsColor);
		renderer.setYLabelsColor(0, labelsColor);
		renderer.setYLabelsVerticalPadding(-5);
		renderer.setXTitle("");
		renderer.setYTitle("");
		renderer.setYLabelsAlign(Align.RIGHT);
		renderer.setAxisTitleTextSize(20);
		renderer.setPointSize((float) 1);
		renderer.setShowLegend(false);
		renderer.setFitLegend(true);
		renderer.setMargins(new int[] { 30, 45, 10, 20 });// 設定圖表的外邊框(上/左/下/右)
		//表格邊框顏色
		renderer.setMarginsColor(getResources().getColor(
				R.color.cardio_bg_color));

顯示資料

這裡我們是模擬實時資料,通過handler遞迴呼叫不斷獲取新資料

Runnable runnable = new Runnable() {

		@Override
		public void run() {
			ArrayList<Integer> datas = new ArrayList<Integer>();
			for (int i = 0; i < 1; i++) {
				datas.add(random.nextInt(2000)+500);
			}
			ArrayList<Integer> datas2 = new ArrayList<Integer>();
			for (int i = 0; i < 1; i++) {
				datas2.add(random.nextInt(2000)+500);
			}

			updateCharts(datas);
			updateChartsMoreLine(datas2);			
			handler.postDelayed(this, POINT_GENERATE_PERIOD);
		}
	};

protected void updateCharts(ArrayList<Integer> datas) {
		for (int addY : datas) {
			series.add(i, addY);
			i++;
		}
		if (i < MAX_POINT) {
			renderer.setXAxisMin(0);
			renderer.setXAxisMax(MAX_POINT);
		} else {
			renderer.setXAxisMin(series.getItemCount() - MAX_POINT);
			renderer.setXAxisMax(series.getItemCount());
		}
		chart.repaint();
	}

protected void updateChartsMoreLine(ArrayList<Integer> datas) {
		for (int addY : datas) {
			series2.add(i2, addY);
			i2++;
		}
		chart.repaint();
	}


相關推薦

Android 實時曲線圖/折線

基於開源框架AChartEnginee繪製圖表表格,實現顯示資料折線圖,對比功能。效果圖如下: 新建工程 通過Android studio新建專案,新增achartenginee.jar依賴。點選下載jar 初始化圖表 資料集 根據需求設定多條曲線,一條曲線對應一個XY

88.android 簡單的折線效果

 //第一步 寫個ChartView類繼承View: public class ChartView extends View { //xy座標軸顏色 private int xylinecolor = 0xffe2e2e2; //xy座標

android 自定義折線

注意:不要以為獲取到了控制元件所在位置設定下就可以讓控制元件在具體的位置了,而是所在佈局檔案型別以,0,0開始,所有 不要去設定位置預設就在那個位置,設定了反而讓控制元件不在本身正確的位置了 一:填充+透明方法 填充paint.setStyle(Paint.Sty

android自定義折線——之簡單的溫度折線

              最近做了一個類似天氣預告的demo,其中有一個自定義折線圖,在網上找了很多例子,沒有一個合適的,於是只能參考別人的例子,根據自己的想法寫了一套demo.            在做自定義控制元件之前,先熟悉一下paint和canvas的簡單使用。

Android MPChart—折線

第三方資源庫MPChart如何新增到專案中就不說了,不知道的網上搜一下,很多。 本篇主要說明MPChart中LineChart(折線圖)是如何呼叫實現的。 一、佈局檔案 <com.github.mikephil.charting.charts.LineChar

Android折線,這有很多例子

直接附上程式碼 import android.animation.ValueAnimator; import android.content.Context; import android.graphics.Canvas; import android.graphics.C

mataplotlib繪製曲線圖折線

繪製曲線: import time import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 10, 1000) y = np.sin(x) plt.figure(figsize=

Android Studio平臺下使用hellochart實現從txt檔案讀取資料繪折線

Android Studio平臺下使用hellochart實現從文字讀取資料繪折線圖 本人是一個剛剛接觸Android不超過兩個月的小白,最近在做的論文是關於這一塊的相關內容。所有的東西都是自學的,聽導師的建議也是第一次留個這樣的資料,可能有很多地方理解不到位,

android折線ichartjs的動態載入資料

之間給大家分享過一個html寫的折線圖,再將折線圖利用webview放在手機中,原來的那個折線圖中的x軸座標在html中已經被寫死,這樣就帶來了操作的不變,程式碼的靈活性也隨之降低。比如,我需要檢視今天的溫度,可是現在是晚上7點,今天還沒有過完,那麼問題來了,怎

Android自定義控制元件之《折線的繪製》

金融軟體裡的行情分時圖,這是我們最常見的折線圖,當然了,折線圖的用途並不僅僅侷限於此,像一般在一定區間內,為了更好的能顯示出幅度的變化,那麼用折線圖來展示無疑是最符合效果的,當然了,網上也有很多的第

Android折線的探討

  概括            最近做一個專案,有個需要折線圖的需求,剛開始自己很犯懶,就想著隨便從網上找個用就用,後來發現網上的介紹和案例,都是各有千秋,對我來說用他們都不是那麼的完美, 比如一線介紹簡單的畫法,確實介紹的太簡單了,如果改造他們的,太麻煩,真不如我自己重寫

百度ECharts---android線上展示統計圖表(折線\柱狀\餅狀)

做金融型別的應用經常會用到資料的統計報表 諸如折線圖 ,  K線圖, 餅狀圖,柱狀圖  既能形象的表述資料的分佈 , 同時又增加了資料的可讀性 實現思路: 百度Echarts支援安卓移動端的運用 , WebView載入html, 巢狀JavaScript程式碼 , 即可動態

android自定義統計折線和柱狀組合

本程式碼是一年前公司專案需要自己所寫,當時做android專案需要統計的功能,統計的圖表包括餅圖、柱狀圖、折線圖,程式碼寫的有些笨拙!希望大家能夠看懂!其程式碼做拋磚引玉,希望大家能夠再改寫下!可以用多執行緒做出動畫,是不是更好呢?這些後期我也沒有整理過,所以誰能再整理下!

iOS 中各種折線.曲線.圖形繪製方法集錦(折線.走勢.柱狀.動態曲線圖.形狀.劃線)

前言 具體實現如下: 目錄 前言 第一 折線圖實現 .1) 自定義檢視實現 .2)關鍵技術實現 .3) 方法呼叫 .4) 效果展示 第二 走勢曲線圖實現 .1) 匯入DJChart第三方庫 .2)

Android sensor資料通過matlab實時顯示波形

前兩年在我們平臺上除錯VR Sensor時候,做的一個輔助工具,在此做個記錄。 當時有客戶會報一些VR app中sensor存在異常的問題,但若是更換其它的VR app又沒有類似問題。 如何確認是否我們sensor存在問題呢?如果只是把sensor資料打印出

Android學習筆記-解決hellocharts折線由於特殊資料不能展示的問題

前兩天修改一個專案的BUG: 使用hellocharts展示了一個餅圖,點選餅圖的一項再用折線圖展示餅圖中每項具體資料。 發現問題:餅圖中現有資料,點選之後折線圖不能展示資料。 通過檢視資料來源發現:不能展示圖片的情況有兩種: 1. 折線圖所有資料一樣:

Android開發自定義控制元件實現一個折線

實現一個如下圖所示的折線圖 首先是控制元件繪圖區域的劃分,控制元件左邊取一小部分(控制元件總寬度的八分之一)繪製表頭,右邊剩餘的部分繪製表格 確定表格的行列數,首先繪製一個三行八列的網格,設定好行列的座標後開始繪製 /*繪製三條橫線*/ for(int i=0;i&l

Android柱狀、餅狀折線

1、效果圖 2、程式碼 1)compile ‘com.github.PhilJay:MPAndroidChart:v3.0.1’ 2)柱狀圖 <com.github.mikephil.charting.charts.BarChart

Android自定義View實現簡單的折線、柱狀

首先說第一個柱狀圖,實現很簡單。一個自定義View,重現裡面的OnDraw方法。然後利用paint,canvas繪製帶填充的長方形即可。每個長方形的X軸平方View的x軸即可,長方形的高度通過簡單的計算即可得到。下面上柱狀圖程式碼 package com.hrules.

echarts 折線變成曲線圖 type:'line', smooth: true,

var option = { tooltip: { trigger: 'axis', axisPointer: { type: 'cross',