aiChartsサンプル:レンジ面積チャート

概要

レンジ(範囲)面積チャートは計量的なデータをチャートとして表します。レンジ面積チャートは面積チャートの種類の一つで、天候のパターン、またはボリンジャーバンドのようなデータを作図できます。それぞれのデータの点は2つのY値で定義され、それぞれY値の上限と下限を表しています。

レンジ面積チャートを作るには

レンジ縦棒チャートを作るには、まずはChartSeriesのインスタンスを作り、チャートタイプ(作図タイプ)をRangeAreaに設定し、データをセットします。

ソースコードは以下のようになります。

サンプルダウンロードはこちら(ZIP,15KB)

イメージ図

XML アクティビティレイアウト


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<com.artfulbits.aiCharts.ChartView
		android:id="@+id/chartView"
		chart="@xml/chart"
		android:background="@android:drawable/alert_dark_frame"
		android:layout_width="fill_parent"
		android:layout_height="fill_parent"/>
</LinearLayout>

Java


package com.artfulbits.aiCharts.RangeAreaSample;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import com.artfulbits.aiCharts.ChartView;
import com.artfulbits.aiCharts.Base.ChartSeries;

import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;

public class MainActivity extends Activity
{
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		ChartView chartView = (ChartView) findViewById(R.id.chartView);

		ChartSeries series = chartView.getSeries().get(0);

		SQLiteDatabase db = openDB("data.db");

		series.getPoints().setData(db, "[values]",
				new String[] { "value1", "value2" });
	}

	public SQLiteDatabase openDB(String filename)
	{
		File file = getDatabasePath(filename);

		if (!file.exists())
		{
			File patentDir = file.getParentFile();

			if (!patentDir.exists())
				patentDir.mkdirs();

			int length = 0;
			byte[] buffer = new byte[2048];

			try
			{
				OutputStream output = new FileOutputStream(file);
				InputStream input = getAssets().open(filename);

				while ((length = input.read(buffer)) > 0)
				{
					output.write(buffer, 0, length);
				}

				output.close();
				input.close();
			}
			catch (IOException ex)
			{
				ex.printStackTrace();
			}
		}

		return SQLiteDatabase.openOrCreateDatabase(file, null);
	}
}

XMLチャート


<?xml version="1.0" encoding="utf-8"?>
<ai:chart xmlns:ai="http://www.artfulbits.com/android/aiCharts">
	<ai:area/>
	<ai:series type="RangeArea"/>
</ai:chart>