このトピックでは XamDataChart™ コントロールのシリーズ データの相関機能を紹介し、コード例を示しつつそれを説明します。
シリーズ データの相関は、 ScatterSeries を使用して表示されるデータ セットの 2 変数間の相関の計算を可能にする CorrelationCalculator をもつ XamDataChart コントロールの統合です。データの相関はデータセット中の 2 つの変数が互いにどう関係し合っているかを識別するのに役立ちます。たとえば、XamDataChart コントロールにプロットされた高血圧測定値と患者の年齢グループとの間に関連があるかどうかを判断するのに相関を使うことができます。CorrelationCalculator やデータ相関の異なるタイプについてのより詳細な情報は Infragistics Math Calculators のトピックを参照してください。
このセクションでは XamDataChart コントロールのシリーズ データの相関機能を使用する際の前提条件を示しています。
表 1 – WPF プロジェクトに加えられる必要がある NuGet パッケージのリスト。
CorrelationCalculator は IEnumerable インターフェイス (List、 Collection、 Queue、 Stack など) を導入しなければならないデータ オブジェクトを必要とし、このオブジェクトの項目はデータ相関が計算される 2 つの数値データ列でなければなりません。さらに、これらの 2 つのデータ列は CorrelationCalculator と ScatterSeries オブジェクトの XMemberPath と YMemberPath プロパティにマップされなければなりません。
上記の基準を満たすオブジェクトの例は CorrelationDataSample で、 相関データの例リソースからダウンロードしてプロジェクトで使用できます。
次の例は XamDataChart コントロールの ScatterSeries にバインドされたデータの相関がどのように計算され、チャートの凡例にシリーズのタイトルとして結果が表示されるかについて説明します。これは、アセンブリ要件セクションにリストされている必要なアセンブリをすべて追加していることを前提とします。
図 1 – CorrelationCalculator をもつ XamDataChart コントロールの組み込み例
この手順は CorrelationCalculator をもつ XamDataChart コントロールを組み込み、計算結果を表示するために必要なステップを提供します。
相関を計算するためのデータを提供するデータ ソースとして 相関データ例オブジェクトを追加します。
XAML の場合:
xmlns:local="clr-namespace:Infragistics.Samples.Data.Models"
XAML の場合:
<local:CorrelationDataSample x:Key="Data"> <local:CorrelationDataSample.Settings> <local:CorrelationDataSettings DataDistribution="RandomlyIncreasing" /> </local:CorrelationDataSample.Settings> </local:CorrelationDataSample>
Visual Basic の場合:
Imports Infragistics.Samples.Data.Models ... Dim data As New CorrelationDataSample() data.Settings = New CorrelationDataSettings() data.Settings.DataDistribution = DataDistribution.RandomlyIncreasing
C# の場合:
using Infragistics.Samples.Data.Models; ... CorrelationDataSample data = new CorrelationDataSample(); data.Settings = new CorrelationDataSettings(); data.Settings.DataDistribution = DataDistribution.RandomlyIncreasing;
適切なデータ バインディングで CorrelationCalculator のインスタンスを作成します。
XAML の場合:
xmlns:ig="http://schemas.infragistics.com/xaml" xmlns:igMath="http://schemas.infragistics.com/xaml"
XAML の場合:
<ig:CorrelationCalculator x:Key="correlationCalc" XMemberPath="X" YMemberPath="Y" ItemsSource="{StaticResource Data}" />
Visual Basic の場合:
Imports Infragistics.Math.Calculators ... Dim correlationCalc As New CorrelationCalculator() correlationCalc.XMemberPath = "X" correlationCalc.YMemberPath = "Y" correlationCalc.ItemsSource = data
C# の場合:
using Infragistics.Math.Calculators; ... CorrelationCalculator correlationCalc = new CorrelationCalculator(); correlationCalc.XMemberPath = "X"; correlationCalc.YMemberPath = "Y"; correlationCalc.ItemsSource = data;
ScatterSeries オブジェクトのタイトル プロパティを CorrelationCalculator リソースの値プロパティにバインドします。あるいは、静的なリソースにバインディングして他のコントロール (たとえば、TextBlock) のデータ相関結果を表示できます。
XAML の場合:
<Grid > <ig:XamDataChart x:Name="DataChart" Legend="{Binding ElementName=Legend1}" Margin="5"> <ig:XamDataChart.Axes> <ig:NumericXAxis x:Name="xAxis" /> <ig:NumericYAxis x:Name="yAxis" /> </ig:XamDataChart.Axes> <ig:XamDataChart.Series> <!-- ========================================================================== --> <ig:ScatterSeries Title="{Binding Value, Source={StaticResource correlationCalc}}" ItemsSource="{StaticResource Data}" XMemberPath="X" YMemberPath="Y" XAxis="{Binding ElementName=xAxis}" YAxis="{Binding ElementName=yAxis}"> </ig:ScatterSeries> <!-- ========================================================================== --> </ig:XamDataChart.Series> </ig:XamDataChart> <ig:Legend x:Name="Legend1" Content="Data Correlation" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10"/> </Grid>
Visual Basic の場合:
Imports Infragistics.Controls.Charts ... Dim binding As New Binding() binding.Source = correlationCalc binding.Path = New PropertyPath("Value") binding.Mode = BindingMode.OneWay ... Dim series As ScatterSeries = Me.DataChart.Series.OfType(Of ScatterSeries)().First() series.SetBinding(Series.TitleProperty, binding)
C# の場合:
using Infragistics.Controls.Charts; ... Binding binding = new Binding(); binding.Source = correlationCalc; binding.Path = new PropertyPath("Value"); binding.Mode = BindingMode.OneWay; ... ScatterSeries series = this.DataChart.Series.OfType<ScatterSeries>().First(); series.SetBinding(Series.TitleProperty, binding);