ヒストグラムの外観は、棒グラフに似ています。小さな違いとして、棒グラフでは棒同士の間を空けますが、ヒストグラムでは棒同士の間を空けません。ヒストグラムの縦棒同士の間が空いていないのは、縦棒の境界が各縦棒で表している区間の境界を示す実際の X 軸値を表すからです。
ヒストグラムと棒グラフの外観は相関していますが、機能は相関していません。棒グラフはデータ点から作成しますが、ヒストグラムはデータの度数分布から作成します。
以下のグラフは、棒グラフとヒストグラムの違いを示します。両方のグラフでまったく同じ Y データを使用します。棒グラフ(上側)は、各年の温度の平均温度を示します。ヒストグラム(下側)は、同じ入力温度データを使用して、各区間に分布する温度の数を自動的に集計して、結果のヒストグラムを描画します。わかりやすくするため、各区間の上部に各区間内のカウント数を示すグラフラベルを付けてあります。
以下のグラフは、ヒストグラムの詳細とプロパティを示します。1番目の ChartGroup では 100個のランダムデータ座標の散布図で、2番目の ChartGroup では各散布データ点からマーカーの交差点までの距離の分布を基にしたヒストグラムです。
上記のヒストグラムでは、IntervalCreationMethod プロパティの SemiAutomatic メソッドを使用して、上限値と下限値、および区間数を指定しています。IntervalCreationMethod プロパティは、異なる区間の境界を設定する必要がある場合に便利です。
IntervalCreationMethod プロパティから、以下の3つのメソッドの1つを選択できます。
SemiAutomatic メソッドを使用する場合、区間の上限値と下限値、および区間数を指定します。区間の境界は均等に計算します。SemiAutomatic メソッドを選択した場合、IntervalStart、IntervalWidth、IntervalNumber の各プロパティを使用できます。IntervalStart プロパティは、先頭の区間の開始数値を取得または設定します。上記のヒストグラムでは、IntervalStart プロパティを0に設定しているため、区間は数値0から開始します。区間幅を指定するには、IntervalWidth プロパティを特定の幅サイズに設定します。上記の例では、IntervalWidth プロパティは各区間に 10 の幅サイズを取得します。IntervalNumber プロパティは、ヒストグラム内の区間数を取得します。たとえば、上記のヒストグラムでは、IntervalNumber プロパティを 10 に設定しているため、最大 10 個の区間が可能です。残りの4つの間隔は0のデータ要素を持つため上記のグラフに表示されません。
Automatic メソッドを使用する場合、グラフは、データの最大値と最小値を使用して、区間をデータ平均の3つの標準偏差内に分布するように制限することによって、区間の上限値と下限値を計算します。区間数はオプションです。区間の境界は均等に計算します。
XDataBoundaries メソッドを使用する場合、データセットの X 値を使用して各区間の境界を明示的に設定します。X 値をソートして、重複値を削除します。結果の各昇順値を使用して、次の区間の境界を決定します。したがって、1番目と2番目の結果の X 値は先頭の区間を定義し、次に続く各 X 値は次の区間の最後を指定します。N 個の区間を指定するには N+1 個の一意の X 値が必要であることに注意してください。
設計時に IntervalCreationMethod プロパティにアクセスするには、ChartData ノードを展開して SeriesList ノードの横の〈…〉ボタンをクリックします。ChartDataSeries コレクションエディタが表示されます。Histogram ノードを探して展開します。IntervalCreationMethod プロパティを選択し、IntervalCreationMethod プロパティのドロップダウンボックスの3つのメソッドの1つを選択してメソッドのタイプを選択します。IntervalCreationMethod プロパティは、コードから以下を入力してアクセスすることもできます。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
cds.Histogram.IntervalCreationMethod = IntervalMethodEnum.SemiAutomatic |
C# コードの書き方
C# |
コードのコピー
|
---|---|
cds.Histogram.IntervalCreationMethod = IntervalMethodEnum.SemiAutomatic; |
以下のサンプルコードのように、ChartHistogram オブジェクトの DisplayType プロパティを使用し、区間と区間数をヒストグラム、度数グラフ、階段度数グラフとして表示できます。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
'グラフのヒストグラムを「ヒストグラム」として表示します。 ch.DisplayType = DisplayTypeEnum.Histogram 'グラフのヒストグラムを「度数グラフ」として表示します。 ch.DisplayType = DisplayTypeEnum.FrequencyGraph 'グラフのヒストグラムを「階段型度数グラフ」として表示します。 ch.DisplayType = DisplayTypeEnum.SteppedFrequencyGraph |
C# コードの書き方
C# |
コードのコピー
|
---|---|
//グラフのヒストグラムを「ヒストグラム」として表示します。 ch.DisplayType = DisplayTypeEnum.Histogram; //グラフのヒストグラムを「度数グラフ」として表示します。 ch.DisplayType = DisplayTypeEnum.FrequencyGraph; //グラフのヒストグラムを「階段型度数グラフ」として表示します。 ch.DisplayType = DisplayTypeEnum.SteppedFrequencyGraph; |
いくつかのデータ要素が残りのデータ要素から離れて現れる場合もあります。この場合、この距離値は異常値と呼ばれます。大部分の場合、異常値は残りのデータから離れすぎているため区間内に分布せず、データ要素の値が不明となります。
異常値を除外させないため、C1Chart の ChartHistogram オブジェクトは以下の2つのプロパティを提供します。
AboveIntervalCount プロパティは最後の区間の終了値より大きい数値を返します。
BelowIntervalCount プロパティは先頭の区間の開始値より小さい数値を返します。
デザイナでは、AboveIntervalCount プロパティと BelowIntervalCount プロパティはChartDataSeries コレクションエディタの Histogram ノードにあります。以下のコードは、AboveIntervalCount プロパティを使用して、異常値があるかどうかを調べる方法を示します。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Dim overflow As Integer = CInt(cds.Histogram.AboveIntervalCount) Dim msg As String = "" ' これは最後の区間の後に分布する異常値があるかどうかを調べます。 If overflow > 0 Then msg = "Number > " + carea.AxisX.Max.ToString() + " = " + overflow.ToString() End If c1Chart1.ChartLabels("overflow").Text = msg |
C# コードの書き方
C# |
コードのコピー
|
---|---|
int overflow = (int)cds.Histogram.AboveIntervalCount; string msg = ""; // これは最後の区間の後に分布する異常値があるかどうかを調べます。 if(overflow > 0) { msg = "Number > " + carea.AxisX.Max.ToString() + " = " + overflow.ToString(); } c1Chart1.ChartLabels["overflow"].Text = msg; |
ヒストグラムでは、縦棒または区間帯はそれが表す値に比例します。すべての区間の区間幅が同じ場合、各区間の高さは単位幅あたり同じ度数を表します。縦棒の幅はサイズが異なる場合もあります。この場合、縦棒の高さを調整して各区間帯の比例を維持する必要があります。たとえば、いくつかの不均等な縦棒を持つ場合、C1Chart の Histogram オブジェクトの Normalized プロパティを利用して、縦棒または区間をそれが表す値に比例させることができます。
Histogram オブジェクトには NormalDisplay、NormalizationInterval、Normalized の3つのプロパティが含まれます。Normalized プロパティを使用して、不均等な区間を正規化して、各区間の高さを単位幅あたり同じ度数を表すことができます。不均等な区間は、残りの区間と一様でない区間です。Normalized プロパティを True に設定した場合、NormalizationInterval プロパティを特定の幅サイズに柔軟に設定できます。たとえば、IntervalWidth が 10 のときこれを 20 に正規化したいと仮定します。これにより、各区間のサイズが2倍になります。その結果、各度数(Y 値)が2倍になります。IntervalWidth を 2 から 10 に正規化して、サイズの5分の1の区間幅を正規化できるようにしたい場合、各度数(Y 値)は5分の1に小さくなります。