1. 程式人生 > >AchartEngine圖表庫之動態折線圖(多條)

AchartEngine圖表庫之動態折線圖(多條)

炫酷效果圖


實現步驟

1 設定點集

<span style="font-size:18px;">public void addXYSeries(XYMultipleSeriesDataset dataset, String[] titles,
                            int scale) {
        for (int i = 0; i < titles.length; i++) {
            series = new XYSeries(titles[i], scale);
            seriesList.add(series);
            dataset.addSeries(series);
        }
    }</span>
2 設定描繪器和圖表樣式
<span style="font-size:18px;">protected void setRenderer(XYMultipleSeriesRenderer renderer, int[] colors,
                               PointStyle[] styles) {
        renderer.setAxisTitleTextSize(16);
        renderer.setChartTitleTextSize(20);
        renderer.setLabelsTextSize(15);
        renderer.setLegendTextSize(15);
        renderer.setPointSize(5f);
        renderer.setMargins(new int[]{20, 30, 15, 20});// 上,左,下,右
        for (int i = 0; i < titles.length; i++) {
            XYSeriesRenderer r = new XYSeriesRenderer();
            r.setColor(colors[i]);
            r.setPointStyle(styles[i]);
            r.setDisplayChartValues(true);
            r.setLineWidth(2f);// 寬度
            r.setFillPoints(true);// 完全填充
            r.setChartValuesSpacing(3);
            renderer.addSeriesRenderer(r);
        }
    }</span>
<span style="font-size:18px;"> protected void setChartSettings(XYMultipleSeriesRenderer renderer,
                                    String title, String xTitle, String yTitle, double xMin,
                                    double yMin, double yMax, int axesColor, int labelsColor) {
        renderer.setChartTitle(title);
        renderer.setXTitle(xTitle);// X軸標題
        renderer.setYTitle(yTitle);// Y軸標題
        // renderer.setXAxisMin(xMin);// X最小值
        renderer.setYAxisMin(yMin);// Y最小值
        renderer.setYAxisMax(yMax);// Y最小值
        renderer.setAxesColor(axesColor);// X軸顏色
        renderer.setLabelsColor(labelsColor);// Y軸顏色
    }</span>
3 Handler+Timer模擬資料重新整理
<span style="font-size:18px;">private void sendMessage() {
        handle = new Handler() {
            public void handleMessage(Message msg) {
                updatechart();
            }
        };
        task = new TimerTask() {
            public void run() {
                Message msg = new Message();
                msg.what = 200;
                handle.sendMessage(msg);
            }
        };
        timer.schedule(task, 0, 1000);
    }</span>
4 重新整理圖表
<span style="font-size:18px;">String xKeduValue = nowTime.format(new java.util.Date());
        //得到x軸上點的數量
        int seriesItemLenght = seriesList.get(0).getItemCount();
        // x軸控制顯示10個數值
        if (seriesItemLenght > xLenght) {
            seriesItemLenght = xLenght;
        }
        // 移除舊的點集
        for (int i = 0; i < titles.length; i++) {
            dataset.removeSeries(seriesList.get(i));
        }
        
        if (seriesItemLenght < xLenght) {
            for (int i = 0; i < titles.length; i++) {
                seriesList.get(i).add(seriesItemLenght + 1, dataList.get(i));
            }
            renderer.addXTextLabel(seriesItemLenght + 1, xKeduValue);
            xkedu[seriesItemLenght] = xKeduValue;
        } else {
            // 將x,y數值快取
            for (int i = 0; i < seriesItemLenght - 1; i++) {
                for (int j = 0; j < titles.length; j++) {
                    catchList.get(j)[i] = (float) seriesList.get(j).getY(i + 1);
                }
                xkedu[i] = xkedu[i + 1];
            }
            // 移除舊點
            for (int i = 0; i < titles.length; i++) {
                seriesList.get(i).clear();
            }
            // 新增新點,變換座標
            for (int i = 0; i < seriesItemLenght - 1; i++) {
                for (int j = 0; j < titles.length; j++) {
                    seriesList.get(j).add(i + 1, catchList.get(j)[i]);
                }
                renderer.addXTextLabel(i + 1, xkedu[i]);
            }
            xkedu[xLenght - 1] = xKeduValue;
            for (int i = 0; i < titles.length; i++) {
                seriesList.get(i).add(xLenght, dataList.get(i));
            }
            renderer.addXTextLabel(xLenght, xKeduValue);
        }
        for (int i = 0; i < titles.length; i++) {
            dataset.addSeries(seriesList.get(i));
        }
        mChartView.invalidate();</span>

原始碼下載連結:

http://download.csdn.net/detail/huiling815/9651808

相關推薦

AchartEngine圖表動態折線()

炫酷效果圖 實現步驟 1 設定點集 <span style="font-size:18px;">public void addXYSeries(XYMultipleSeriesDataset dataset, String[] titles,

HelloCharts圖表餅狀

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.andro

HelloCharts圖表柱狀

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" an

Echarts-折線-

//企業排名top5根據客車、貨車 var optionTwo={ tooltip: { trigger: 'axis',

echarts折線折線x軸不同,以及vue中引用

需求:echarts繪製多條折線,x軸間隔不同。效果圖:   資料格式分析:因為每條線的x軸不同,所以普通的渲染方式無法實現。解決辦法是series的資料格式 -- [ [x,y],[x,y] ].核心程式碼:1)小技巧--js時間格式化封裝    如果沒有引es6,可以直接

安卓 使用開源AChartEngine圖表折線

安卓 使用開源AChartEngine圖表庫畫折線圖 一、簡述        記--使用AChartEngine開源圖表庫繪製簡單的折線圖。        AChartEngine是一個開源的Android圖

HelloCharts圖表折線

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" an

vue專案中使用Echarts 動態更改圖表資料 , Vue 折線、柱狀圖表動態重新整理 ,

問題:在vue元件中,用echarts外掛 動態獲取、修改圖表資料 解決:已解決! 第一步:開啟cmd命令視窗 安裝echarts依賴 安裝:npm install echarts -S 第二步:在main.js中全域性引入   //引入echarts的圖表外掛

echarts圖表去掉折線的折點圓圈,實測有效

關鍵屬性:symbol: 'none', option = { xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']

AndroidMPAndroidChart的動態折線

寫的太多,但是比較詳細import android.graphics.Color; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.

數據定義視

三種 圖的操作 新的 rom 大於等於 sql語句 表達 包括 with 視圖是從一張或多張基本表(或視圖)導出的表。與基本表不同,數據庫只會存放視圖的定義,而視圖中的數據還是存放在原來基本表中。視圖是基本表的映射,如果基本表發生了變化,則從視圖中查詢出的數據也會相應地發生

★ Python 使用Matplotlib繪製點折線與餅

★使用Python第三方庫matplotlib(2D繪相簿)繪製常見的: 點圖 折線圖 條狀圖 餅圖 ★引入: 常用的顏色c="???":             1:紅色‘red’ &n

安卓 動態折線

安卓 動態折線圖 一、簡述       記--一個簡單的動態折線圖。資料為隨機數。       例子打包:連結: https://pan.baidu.com/s/12IdD6eayEvRPeFvoymuCcg 提取碼: 9vu7

Thinkphp3.2整合Jpgraph函式 生成統計折線()

最近做預約系統,為了整合Jpgraph函式弄了半天... 網站系統後臺是用:Thinkphp3.2.3 Jpgraph版本:jpgraph-3.5.0b1 如下圖所示類似效果~~ 首先Jpgraph程式碼放到如下位置: jpgraph.php和jpgraph

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

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

echarts圖表 實現簡單 雷達

<script type='text/javascript' src="js/echarts.js" charset='utf-8'></script> 2.核心程式碼

Python零基礎——繪製折線、散點

Python繪圖需要下載安裝matplotlib模組,它是一個數學繪相簿,我們將使用它來製作簡單的圖表,如折線圖和散點圖。關於matplotlib模組的下載安裝預配置將在後面具體介紹。 (一)繪製折線圖 首先,我們先繪製一個簡單的折線圖 # 呼叫模組 import matplotlib.

echarts 3 的入門使用(動態折線)

應專案需求需要資料動態視覺化,藉此來爛筆頭記下echarts3.6.2的使用方法. 一. 先做準備工作   1 .首先去官網下載所需要的echarts.js的相關程式碼,由於是開發環境,所以下載的是完整的echarts.js    2. 將echarts.js 直接引入專案

CanvasJS動態折線

var chart = new CanvasJS.Chart("chartContainer", { theme: "theme4", animationEnabled: true, axisX: { valueForm

R語言ggplot2包折線

引言 折線圖一般用於描述一維變數隨著某一連續變數變化的情況,連續變數通常為時間。換句話說,折線圖最適合描述時間序列資料的變化情況。當然隨著離散變數變化也是可以的,不過這個離散變數必須是有序的。 畫一條折線圖 一條基本的折線圖還是比較簡單的,只要在ggp