このトピックは、コード例を示して、 Stacked100BarSeries を UltraDataChart™ コントロールで使用する方法を説明します。
積層型 100 棒シリーズは カテゴリ シリーズ に属しており、それぞれの隣に積層された短形のコレクション (StackedFragmentSeries) を用いて描画されます。コレクションのそれぞれの積層フラグメントは各積層の視覚的な要素を表します。各積層は正の値と負の値の両方を含みます。正の値はいずれも x 軸の正の側にグループ化され、負の値は x 軸の負の側にグループ化されます。Stacked100BarSeries は y 軸の値の処理を除いたすべての面で StackedBarSeries と同じです。データを直接表現する代わりに、 Stacked100BarSeries はデータ ポイント内のすべての値の合計のパーセントに関するデータを表します。さらに、積層型 100 棒シリーズは積層型 100 柱状シリーズと同じデータプロットの概念を使用していますが、データ ポイントは縦の線 (y 軸) に沿ってではなく、横の線 (x 軸) に沿って積層されます。言い換えると、 Stacked100BarSeries は Stacked100ColumnSeries のように描画されますが、時計周りに 90 度回転されます。シリーズの他のタイプと軸のタイプを含んだより概念的情報は、カテゴリ シリーズとチャート軸トピックを参照してください。
図 1 と 2 は、 Stacked100BarSeries と StackedBarSeries が UltraDataChart コントロール内でプロットされた時にどのように見えるかを示しています。
図 1: Stacked100BarSeries タイプの実装例。
図 2: StackedBarSeries タイプの実装例
UltraDataChart はシリーズのタイプ数に制限なくプロットできますが、積層型 100 棒シリーズは同種のシリーズで使用することを推奨します。積層型 100 棒シリーズで推奨されるシリーズのタイプおよび複数シリーズのプロット方法に関する情報は、 複数シリーズ トピックを参照してください。
UltraDataChart コントロールによって固有のデータ モデルにチャートを簡単にバインドすることができますが、そのシリーズが必要とするデータの適切な量とタイプを必ず提供するようにしてください。使用しているシリーズのタイプに基づいた最小要件をデータが満たさないと、コントロールによってエラーが生成されます。データ シリーズの要件についての詳細は、 シリーズ要件 と カテゴリ シリーズ を参照してください。
以下は、 Stacked100BarSeries タイプのデータ要件のリストです。
データ モデルには少なくとも 1 つの数値データ列を含む必要があります。各 Stacked100BarSeries の棒が 2 つ以上の積層したフラグメントを持つように、データ モデルが 2 つ以上の数値データ列を含むことが推奨されます。
データ モデルにはラベルのためのオプションの文字列または日時フィールドを含むことができます。
積層型 100 棒シリーズは以下の規則を使用してデータを描画します。
描画したいデータ モデルの各数値列に対し、 Stacked100BarSeries のシリーズ コレクション プロパティに StackedFragmentSeries を追加する必要があります。
データ モデルの各行は単一の積層型棒を表します。セクションは、 StackedFragmentSeries オブジェクトの ValueMemberPath プロパティにマップされたデータ モデル内の列に基づいて作成されます。
行の 2 番目の値が描画された時、その値はその行の前の値の点に追加されます。この結果、チャートの上方に描画される各点は、その点での累積合計です。
行内のデータ値の合計を使用して棒の各セクションに適用可能なパーセントを計算するため、データ値はパーセントである必要はありません。
y 軸上のデータ マッピングの Label プロパティにマップされる文字列または日時の列はカテゴリ ラベルとして使用されます。Label のデータ マッピングが指定されない場合、デフォルト ラベルが使用されます。
カテゴリ ラベルは y 軸上に描かれます。データ値は x 軸上に描かれます。
描画する時、 Stacked100BarSeries タイプの複数シリーズは、各クラスターがデータ ポイントを表すクラスターに描画されます。UltraDataChart コントロールの Series コレクションの最初の積層型 100 棒シリーズは、クラスターの下に棒として描画されます。各連続するシリーズは、前のシリーズの上に描画されます。この機能の詳細は、 複数シリーズのトピックを参照してください。
以下のコードは、 Stacked100BarSeries オブジェクトをカテゴリ データ サンプル (エネルギー製造データ サンプルからダウンロード可能) にバインドする方法を示します。Stacked100BarSeries のデータ要件に関する情報は、このトピックのデータ要件セクションを参照してください。
Visual Basic の場合:
Dim dataSample As New EnergyProductionDataSample()
Dim xAxis As New NumericXAxis()
Dim yAxis As New CategoryYAxis()
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 Stacked100BarSeries()
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();
NumericXAxis xAxis = new NumericXAxis();
CategoryYAxis yAxis = new CategoryYAxis();
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";
// ...
Stacked100BarSeries series = new Stacked100BarSeries();
series.ItemsSource = dataSample;
series.DataSource = dataSample;
series.XAxis = xAxis;
series.YAxis = yAxis;
// シリーズの全積層フラグメントを追加
series.Series.Add(seriesFragment);
// ...
this.DataChart.Series.Add(series);