データのグループ化 (Chart コントロール)
グループ化を実行すると、系列内のデータ ポイントが 1 つのグループ化されたポイントで置き換えられます。グループ化された各ポイントの X 値と Y 値は、指定した式と、使用されている各ポイントの元の値を組み合わせて計算されます。
グループ化が特に便利なのは、多数のデータ ポイントがある場合です。グループ化によって、グラフの傾向がわかりやすくなります。
系列内のデータをグループ化する前に、そのデータを X 値で昇順に並べ替えます。並べ替えの詳細については、「データの並べ替え」を参照してください。
式のグループ化
グループ化を実行するには、DataManipulator オブジェクトを使用します。グループ化には、軸ラベルことおよび間隔ごとの 2 種類があります。空のポイントを値がゼロのポイントとして扱う場合、DataManipulator.IgnoreEmptyPoints プロパティを false に設定します。
Group メソッドおよび GroupByAxisLabel メソッドを呼び出す場合、式を指定する必要があります。データ ポイントの Y 値の一部またはすべてについて、別の式を指定することもできます。少なくとも 1 つの式を指定する必要があります。式が 1 つの場合、ポイントのすべての Y 値について、その式が使用されます。
式パラメーターの形式は次のとおりです。
"formula[, value:formula, [value:formula[,...]]]"
この formula は式名の 1 つです。また、value は式を適用するデータ ポイントの Y 値の名前です ("Y2" など)。
たとえば、グループ化手順で "AVE, X:CENTER, Y2:MAX" という式の文字列を使用する場合、結果は次のようになります。
間隔の中央にグループ化されたポイントがプロットされます。
グループ化されたポイントのすべての Y2 値について、すべての入力ポイントの最大の Y2 値が使用されます。
その他すべての Y 値の平均が計算されます。
これらの式の一覧と、その実行内容の説明については、以下の表を参照してください。X 値の場合、既定の式 (式を指定しない場合に適用されます) は "FIRST" 式です。また、X 値の式は、指定した間隔について結果のデータ ポイントをプロットする位置 (間隔の左の境界、右の境界、または中央) を決めているだけ、という点に注意してください。
注 |
---|
既定で、"FIRST" 式は X 値の計算に使用されます。 |
式 |
説明 |
X 値に使用する |
---|---|---|
AVE |
指定した間隔に含まれるすべてのデータ ポイントの平均値。 |
いいえ。 |
MAX |
指定した間隔に含まれるすべてのデータ ポイントのうち、最大値。 |
いいえ。 |
MIN |
指定した間隔に含まれるすべてのデータ ポイントのうち、最小値。 |
いいえ。 |
SUM |
指定した間隔に含まれるすべてのデータ ポイントの合計値。 |
いいえ。 |
LAST |
指定した間隔に含まれるすべてのデータ ポイントのうち、最後の値。 |
はい。新しいデータ ポイントは、間隔の最も右の余白に描画されます。 |
FIRST (既定) |
指定した間隔に含まれるすべてのデータ ポイントのうち、最初の値。 |
はい。新しいデータ ポイントは、間隔の最も左の余白に描画されます。 |
HiLoOpCl |
最大値、最小値、開始値、および終了値を計算します。開始値はその間隔内で最初の値、終了値はその間隔で最後の値です。
注
この式は 4 つの Y 値を返すため、4 つの Y 値を使用するグラフの種類 (ローソク足チャートなど) にのみ使用できます。
|
いいえ。 |
HiLo |
指定した間隔に含まれるすべてのデータ ポイントのうち、最大値と最小値。
注
この式は 2 つの Y 値を返すため、2 つの Y 値を使用するグラフの種類 (バブル チャートなど) にのみ使用できます。
|
いいえ。 |
Count |
1 つのポイントにグループ化されたデータ ポイント数。 |
いいえ。 |
DistinctCount |
1 つのポイントにグループ化されたデータ ポイント数。主軸の Y 値が同じデータ ポイントは、1 つのポイントと見なされます。 |
いいえ。 |
Variance |
指定した間隔に含まれるすべてのデータ ポイント間の分散。 |
いいえ。 |
Deviation |
指定した間隔に含まれるすべてのデータ ポイント間の偏差。 |
いいえ。 |
Center |
指定した間隔に含まれるすべてのデータ ポイント間の偏差。 |
はい。新しいデータ ポイントは、間隔の中央に描画されます。 |
間隔ごとのグループ化
間隔ごとにグループ化するには、Group メソッドを使用します。このメソッドは、X 値を使用して系列のデータ ポイントを間隔に分割し、各間隔を 1 つのポイントで置き換えます。
次のコードは、年の四半期ごとにグループ化し、それを "ResultSeries" という一連の結果の系列に格納する例です。
' Group points by year quarters.
Chart1.DataManipulator.Group("AVE", 3, IntervalType.Months, "MySeries", "ResultSeries")
// Group points by year quarters.
Chart1.DataManipulator.Group("AVE", 3, IntervalType.Months, "MySeries", "ResultSeries");
軸ラベルごとのグループ化
軸ラベルごとにグループ化するには、GroupByAxisLabel メソッドを使用します。このメソッドでは、同じ AxisLabel プロパティ値を使用してすべてのデータ ポイントをグループ化し、指定した式を使用して結果の Y 値を計算します。
注 |
---|
このグループ化操作の結果、データ ポイントは、対応する AxisLabel プロパティ値で昇順に並べ替えられます。 |
以下のコードでは、個々の売上を示すポイントをグループ化します。このコードで、データ ポイントの X 値は販売員名を格納する文字列にバインドされ、各販売員名は AxisLabel プロパティを使用して格納される、という前提です。販売員名ごとに売上高が合計され、販売員ごとの合計が入力系列 (既定の出力系列) に出力されます。
' Group by salesperson name, and display total sale amounts.
Chart1.DataManipulator.GroupByAxisLabel("SUM", "GoldMedals")
// Group by salesperson name, and display total sale amounts.
Chart1.DataManipulator.GroupByAxisLabel("SUM", "GoldMedals");
複数の系列のグループ化
複数の系列をグループ化するには、Group メソッドまたは GroupByAxisLabel メソッドで、系列名をコンマで区切った一覧を指定します。
ヒント
出力系列を指定する場合、出力系列の数は、入力系列の数と同じにする必要があります。異なる場合、例外がスローされます。
入力系列として "*" を指定した場合、Chart.Series コレクション内のすべての系列がグループ化されます。
この例では、MySeries1 と MySeries2 という 2 つの系列をグループ化します。
' Group two series by week, using averaged Y values.
Chart1.DataManipulator.Group("AVE", 1, IntervalType.Weeks, "MySeries1, MySeries2")
// Group two series by week, using averaged Y values.
Chart1.DataManipulator.Group("AVE", 1, IntervalType.Weeks, "MySeries1, MySeries2");
関連項目
参照
System.Windows.Forms.DataVisualization.Charting
System.Web.UI.DataVisualization.Charting