aiChartsサンプル:スプラインチャート

概要

「スプライン」は多くのバラエティに富んだ関数に使われる言葉で、データの均しまたは補間を行う場面で使用されます。この言葉は他に区分的多項式および母集団曲線と呼ばれています。スプラインは数学とコンピューターサイエンスで人気のある曲線で、シンプルに構築できること、評価の利便性と正確性、さらに複雑な形を曲線のフィットまたはインタラクティブな曲線デザインが可能なことから支持を受けています。スプラインの関数への補間は、通常それぞれの数値における振れ幅を補間する際の制約内で最小にとどめるように計算されています。スプライン曲線は任意関数のモデリングに最適であり、コンピューターグラフィックの分野で非常に多く使用されています。

スプライン曲線図は限られたデータポイントから移行期の値を予測することができます。aiChartsはBスプライン関数を使用して補間しています。Bスプラインはベジエ曲線を概念化したものです。Bスプライン曲線はベジエ曲線よりも多くの情報とさらに複雑な理論が必要ですが、より多くの利点があります。まず、Bスプライン曲線はベジエ曲線になりえることです。次にBスプライン曲線はベジエ曲線の重要な特性をすべて持っています。最後にBスプライン曲線はベジエ曲線より柔軟性と操作性に優れることです。

スプラインを作るには

aiChartsは少ないコードで簡単にスプラインを作ることができます。
スプラインを作るには、まずはChartSeriesのインスタンスを作り、チャートタイプ(作図タイプ)をSplineに設定し、データをセットします。

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

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

イメージ図

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.splinesample;

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

import android.app.Activity;
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 series1 = chartView.getSeries().get("Sinus");
		ChartSeries series2 = chartView.getSeries().get("Cosinus");

		for (int i = 0; i < 20; i++)
		{
			series1.getPoints().addXY(i, Math.sin(i));
			series2.getPoints().addXY(i, Math.cos(i));
		}
	}
}

XMLチャート


<?xml version="1.0" encoding="utf-8"?>
<ai:chart xmlns:ai="http://www.artfulbits.com/android/aiCharts">
	<ai:area>
		<ai:area.xaxis scale_interval="3.14159265" scale_min="0" scale_max="19"/>
		<ai:area.yaxis labels_visible="false"/>
	</ai:area>
	<ai:series type="Spline" name="Sinus"/>
	<ai:series type="Spline" name="Cosinus"/>
	<ai:legend/>
</ai:chart>