バージョン

積層型スプライン シリーズ

このトピックは、コード例を示して、 StackedSplineSeriesXamDataChart™ コントロールで使用する方法を説明します。

概要

積層型スプライン シリーズはカテゴリ シリーズに属しており、それぞれの上に積層されたスプライン セグメントのスムーズなカーブによって結ばれたポイントのコレクション (StackedFragmentSeries) を用いて描画されます。コレクションのそれぞれの積層フラグメントは各積層の視覚的な要素を表します。各積層は正の値と負の値の両方を含みます。正の値はいずれも y 軸の正の側にグループ化され、負の値は y 軸の負の側にグループ化されます。シリーズの他のタイプと軸のタイプを含んだより概念的情報は、カテゴリ シリーズチャート軸トピックを参照してください。

シリーズ プレビュー

図 1 は、XamDataChart コントロールでプロットされた時に StackedSplineSeries がどのように表示されるのかを示します。

Usin xamDataChart Stacked Spline Series  01.png

図 1: StackedSplineSeries タイプの実装例

シリーズの提案

XamDataChart はシリーズのタイプ数に制限なくプロットできますが、同様タイプのシリーズで StackedSplineSeries を使用することをお勧めします。StackedSplineSeries で推奨されるシリーズのタイプ、および複数のシリーズ タイプのプロット方法に関する情報は、 複数シリーズトピックを参照してください。

データ要件

XamDataChart コントロールによって固有のデータ モデルにチャートを簡単にバインドすることができますが、そのシリーズが必要とするデータの適切な量とタイプを必ず提供するようにしてください。使用しているシリーズのタイプに基づいた最小要件をデータが満たさないと、コントロールによってエラーが生成されます。データ シリーズの要件についての詳細は、 シリーズ要件 と カテゴリ シリーズ を参照してください。

以下は、 StackedSplineSeries タイプのデータ要件のリストです。

  • データ モデルには少なくとも 1 つの数値データ列を含む必要があります。各 StackedSplineSeries のポイントが 2 つ以上の積層したフラグメントを持つようにデータ モデルが 2 つ以上の数値データ列を含むことが推奨されます。

  • データ モデルにはラベルのためのオプションの文字列または日時フィールドを含むことができます。

データ描画の規則

積層型スプライン シリーズは以下の規則を使用してデータを描画します。

  • 描画したいデータ モデルの各数値列に対し、 StackedSplineSeries のシリーズ コレクション プロパティに StackedFragmentSeries を追加する必要があります。

  • データ モデルの各行は単一の積層型スプラインを表します。セクションは、 StackedFragmentSeries オブジェクトの ValueMemberPath プロパティにマップされたデータ モデル内の列に基づいて作成されます。

  • 行の 2 番目の値が描画された時、その値はその行の前の値の点に追加されます。この結果、チャートの上方に描画される各点は、その点での累積合計です。

  • x 軸上のデータ マッピングの Label プロパティにマップされる文字列または日時の列はカテゴリ ラベルとして使用されます。Label のデータ マッピングが指定されない場合、デフォルト ラベルが使用されます。

  • カテゴリ ラベルは x 軸上に描かれます。データ値は y 軸上に描かれます。

  • 描画時に、それぞれの連続シリーズが XamDataChart コントロールのシリーズ コレクションの以前のシリーズの前に描画されて StackedSplineSeries タイプの複数のシリーズはレイヤに描画されます。この機能の詳細は、 複数シリーズのトピックを参照してください。

コード例

データ バインディング

以下のコード スニペットは、 StackedSplineSeries オブジェクトをカテゴリ データ サンプル (エネルギー製造データ サンプルからダウンロード可能) にバインドする方法を示します。StackedSplineSeries のデータ要件の詳細な情報はこのトピックのデータ要件セクションを参照してください。

XAML の場合:

xmlns:local="clr-namespace:[DATA_MODEL_NAMESPACE]"

XAML の場合:

<ig:XamDataChart x:Name="DataChart" >
    <ig:XamDataChart.Resources>
        <local:EnergyProductionDataSample x:Key="energyProdData" />
    </ig:XamDataChart.Resources>
    <ig:XamDataChart.Axes>
        <ig:NumericYAxis x:Name="YAxis" MinimumValue="0" Interval="400" Label="{}{} TWh" />
        <ig:CategoryXAxis x:Name="XAxis" ItemsSource="{StaticResource energyProdData}" Label="{}{Country}" />
    </ig:XamDataChart.Axes>
    <ig:XamDataChart.Series>
    <!-- ========================================================================== -->
        <ig:StackedSplineSeries XAxis="{Binding ElementName=XAxis}"
                                YAxis="{Binding ElementName=YAxis}"
                                ItemsSource="{StaticResource energyProdData}">
            <ig:StackedSplineSeries.Series>
                <ig:StackedFragmentSeries ValueMemberPath="Coal" Title="Coal" />
                <ig:StackedFragmentSeries ValueMemberPath="Hydro" Title="Hydro" />
                <ig:StackedFragmentSeries ValueMemberPath="Nuclear" Title="Nuclear" />
                <ig:StackedFragmentSeries ValueMemberPath="Gas" Title="Gas" />
                <ig:StackedFragmentSeries ValueMemberPath="Oil" Title="Oil" />
            </ig:StackedSplineSeries.Series>
        </ig:StackedSplineSeries>
    </ig:XamDataChart.Series>
    <!-- ========================================================================== -->
</ig:XamDataChart>

Visual Basic の場合:

Dim dataSample As New EnergyProductionDataSample()
Dim yAxis As New NumericYAxis()
Dim xAxis As New CategoryXAxis()
xAxis.DataSource = dataSample
xAxis.Label = "Country"
xAxis.ItemsSource = dataSample
xAxis.Label = "{Country}"
Me.DataChart.Axes.Add(xAxis)
Me.DataChart.Axes.Add(yAxis)
‘ create a stack fragment for each numeric column in your data
Dim seriesFragment As New StackedFragmentSeries()
seriesFragment.ValueMemberPath = "Coal"
seriesFragment.Title = "Coal"
...
Dim series As New StackedSplineSeries()
series.ItemsSource = dataSample
series.DataSource = dataSample
series.XAxis = xAxis
series.YAxis = yAxis
‘ add all stack fragments to the series
series.Series.Add(seriesFragment)
...
Me.DataChart.Series.Add(series)

C# の場合:

EnergyProductionDataSample dataSample = new EnergyProductionDataSample();
NumericYAxis yAxis = new NumericYAxis();
CategoryXAxis xAxis = new CategoryXAxis();
xAxis.DataSource = dataSample;
xAxis.Label = "{Country}";
xAxis.ItemsSource = dataSample;
xAxis.Label = "{Country}";
this.DataChart.Axes.Add(xAxis);
this.DataChart.Axes.Add(yAxis);
// データ中の各数値列の積層フラグメントを作成
StackedFragmentSeries seriesFragment = new StackedFragmentSeries();
seriesFragment.ValueMemberPath = "Coal";
seriesFragment.Title = "Coal";
...
StackedSplineSeries series = new StackedSplineSeries();
series.ItemsSource = dataSample;
series.DataSource = dataSample;
series.XAxis = xAxis;
series.YAxis = yAxis;
// シリーズの全積層フラグメントを追加
series.Series.Add(seriesFragment);
...
this.DataChart.Series.Add(series);