簡單使用achartengine繪制折線圖

jopen 10年前發布 | 95K 次閱讀 圖表/報表制作 aChartEngine

achartengine地址:https://code.google.com/p/achartengine/e.google.com/achartengine

數據模型:

XYSeries: 最常用的數據結構,主要包括一系列的double型(x,y)點對及一個名稱(title)。

XYValueSeries:包括一系列的(x,y,value)點對及一個名稱(title)。

XYMultipleSeriesDataset:包含一系列XYSeries,是最終的數據結構

TimeSeries:與XYSeries類似,x變為Date型,可以轉化為XYSeries。

CategorySeries:與XYSeries類似,x變為string型,可以轉化為XYSeries。

MultipleCategorySeries:一系列CategorySeries。

不同的數據模型用于不同的圖表顯示。XYSeries可以用于折線圖、直方圖。CategorySeries可以用于圓餅圖。每種數據模型都提供了豐富的操作接口,用于插入刪除數據等多種操作。我們可以根據需要將數據存為合適的數據模型。

繪制器聲明了繪制圖表的類型。主要包括以下幾種。

SimpleSeriesRenderer、 XYSeriesRenderer用于設置每張圖中每一個序列的繪制方法。而DefaultRenderer和 XYMultipleSeriesRenderer用于設置整張圖的繪制格式。它們之間的關系類似于XYSeries 與XYMultipleSeriesDataset之間的關系。

要 畫一張圖,我們需要設置好需要繪制的數據及繪制的方法。確定好data model及renderer后,再調用合適的繪制方法繪制圖形。庫提供了兩種繪制圖形的方法,一種是get***Intent( )(如getLineChartIntent())直接新建一個Activity全屏顯示生成的圖表,另一種是get***View( )(如getLineChartView())生成一個View,用戶可以自行設置它的顯示。

主要通過設置幾個對象

  1、XYSeries對象:用于存儲一條線的數據信息;
  2、XYMultipleSeriesDataset對象:即數據集,可添加多個XYSeries對象,因為一個折線圖中可能有多條線。
  3、XYSeriesRenderer對象:主要是用來設置一條線條的風格,顏色啊,粗細之類的。
  4、XYMultipleSeriesRenderer對象:主要用來定義一個圖的整體風格,設置xTitle,yTitle,chartName等等整體性的風格,
    可添加多個XYSeriesRenderer對象,因為一個圖中可以有多條折線。
設置完那些對象之后,可通過 org.achartengine.ChartFactory調用數據集XYMultipleSeriesDataset對象
  與XYMultipleSeriesRenderer對象來畫圖并將圖加載到GraphicalView中,
  ChartFactory有多種api,通過這些api調用來決定是畫折線圖還是柱狀圖。


繪制的基礎

  很多,使用這個引擎的同學,大多,會被它提供的例子的給嚇到,因為,太多參數了!到最后,都不知道看到那里去了,其實,仔細研究,這個引擎的使用是非常簡單…()

首先,我們整理一下思路,一般繪制一個圖表需要:如下圖所示

簡單使用achartengine繪制折線圖

從圖中,我們可以看出,繪制一個圖表我們其實,我們只需要理解三個概念

1,ChartFactory ,傳入XYMutilpleSeriesRenderer,XYMutilpleSeriesDataset,然后,我們只需用 getXXXChartIntent(Context context,XYMutilpleSeriesRenderer,XYMutilpleSeriesDataset,)方法就可以進行圖表的顯示

2,XYMutilpleSeriesRenderer 用于進行繪制的設置,添加的XYSeriesRender對象,用于定義繪制的點集合設置,注意數量要和XYMutilpleSeriesDataset,添加的XYseries一致!!!

3,XYMutilpleSeriesDataset 用于數據的存放,添加的XYseries對象,用于提供繪制的點集合的數據

以下為一個小例子:

public class ShowExamActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        // 1, 構造顯示用渲染圖
        XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
        // 2,進行顯示
        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
        // 2.1, 構建數據
        Random r = new Random();
        for (int i = 0; i < 2; i++) {
            XYSeries series = new XYSeries("test" + (i + 1));
            // 填充數據
            for (int k = 0; k < 10; k++) {
                // 填x,y值
                series.add(k, 20 + r.nextInt() % 100);
            }
            // 需要繪制的點放進dataset中
            dataset.addSeries(series);
        }
        // 3, 對點的繪制進行設置
        XYSeriesRenderer xyRenderer = new XYSeriesRenderer();
        // 3.1設置顏色
        xyRenderer.setColor(Color.BLUE);
        // 3.2設置點的樣式
        xyRenderer.setPointStyle(PointStyle.SQUARE);
        // 3.3, 將要繪制的點添加到坐標繪制中
        renderer.addSeriesRenderer(xyRenderer);
        // 3.4,重復 1~3的步驟繪制第二個系列點
        xyRenderer = new XYSeriesRenderer();
        xyRenderer.setColor(Color.RED);
        xyRenderer.setPointStyle(PointStyle.CIRCLE);
        renderer.addSeriesRenderer(xyRenderer);

        // Intent intent = new LinChart().execute(this);
        Intent intent = ChartFactory
                .getLineChartIntent(this, dataset, renderer);
        startActivity(intent);

    }
}

這里有一點要注意,我們是用內置的activity進行我們的圖表的顯示:所以,我們要在AndroiManifest里面添加一句

<activity android:name="org.achartengine.GraphicalActivity" />
效果:
簡單使用achartengine繪制折線圖

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!