TrueChart for WinForms (C1Chart2D)
円グラフのチュートリアル
チュートリアル > 円グラフのチュートリアル

このセクションでは、円グラフを作成する手順を説明します。円グラフは、単純な値の表示に使用されます。C1Chart の他の種別と異なり、円グラフで複数のセグメントを表示するには、複数のデータセットが必要です。データセットが1つしかない場合、円グラフはセグメントなしで1つの円になるだけです。この例では、8つのセグメントを持つ円を作成するため、8つのデータ点を持つ1つのデータセットではなく、それぞれデータ点を1つだけ持つ8つのデータセットを使用します。

このグラフは、各製品が円の1つのセグメントに相当する円グラフとして表示します。


デザイン時の円グラフの作成

この作業では、C1Chart コントロールをフォームに追加済みであることが前提となります。

グラフ種別の設定

  1. C1Chart コントロールを右クリックして、そのショートカットメニューから[グラフのプロパティ]を選択します。
  2. ツリービューペインから[グラフ種]を選択して、[シンプル]タブのリストから「Pie」を選択します。
  3. そのペインで、左上の円グラフを選択して、〈適用〉をクリックします。

    デフォルトの円グラフでは、それぞれ4つのデータ点を持つ5つの円が作成されます。

データセットの変更

  1. ツリービューペインから[データ]を選択します。
  2. 削除〉をクリックしてデータセットをすべて削除します。
  3. 追加〉をクリックして、新しいデータセットを追加します。

    新しいデータセットにデータを追加する必要があるとの警告が表示されます。

  4. 追加〉を7回クリックして残る7つのデータセットを追加し、円のセグメントが8つになるようにします。
  5. ツリービューペインから[データ]-[データテーブル]を選択します。
  6. データテーブルで1つめのフィールドをクリックし、(X, Y)の値として(1, 80)、(1, 400)、(1, 20)、(1, 60)、(1, 150)、(1, 300)、(1, 130)、(1, 500)を入力します。
  7. ツリービューペインから[データ]を選択し、[データセット]リストボックスからデータセットを選択して、[ラベル]テキストボックスに各データセットのラベルを次のように入力します。
    • Series0 は「Hand Mixer ($80.00)」
    • Series1 は「Stand Mixer ($400.00)」
    • Series2 は「Can Opener ($20.00)」
    • Series3 は「Toaster ($60.00)」
    • Series4 は「Blender ($150.00)」
    • Series5 は「Food Processor ($300.00)」
    • Series6 は「Slow Cooker ($130.00)」
    • Series7 は「Microwave ($500.00)」

円グラフへの凡例の追加

凡例を有効にするには、[グラフのプロパティ]ダイアログボックスのツリービューペインで[外観]-[凡例]を選択して、[外観][凡例]」タブにある[表示]チェックボックスを ON にします。

プログラムによる円グラフの作成

この作業では、C1Chart コントロールをフォームに追加済みであることが前提となります。

円グラフは、以下の手順を使用してプログラムで作成できます。

  1. 次の指示文を追加して C1.Win.C1Chart 名前空間を宣言します。

    Visual Basic コードの書き方

    Visual Basic
    コードのコピー
    Imports C1.Win.C1Chart;
    

    C# コードの書き方

    C#
    コードのコピー
    using C1.Win.C1Chart;
    
  2. Form1 をダブルクリックし、以下のコードを Form1_Load プロシージャに追加して、単純な円グラフを作成します。

    Visual Basic コードの書き方

    Visual Basic
    コードのコピー
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            ' グラフ種別を設定 
            C1Chart1.ChartArea.Inverted = True
            C1Chart1.ChartGroups(0).ChartType = C1.Win.C1Chart.Chart2DTypeEnum.Pie
    
            ' 既存のデータセットをクリア 
            C1Chart1.ChartGroups(0).ChartData.SeriesList.Clear()
    
            ' データを追加 
            Dim ProductNames As String() = {"Hand Mixer", "Stand Mixer", "Can Opener", "Toaster", "Blender", "Food Processor", "Slow Cooker", "Microwave"}
            Dim PriceX As Integer() = {80, 400, 20, 60, 150, 300, 130, 500}
    
            ' データセットのコレクションを取得 
            Dim dscoll As ChartDataSeriesCollection = C1Chart1.ChartGroups(0).ChartData.SeriesList
            For i As Integer = 0 To PriceX.Length - 1
                    ' データセットに入力 
                    Dim series As ChartDataSeries = dscoll.AddNewSeries()
                    ' 1つのデータ点を追加して1つの円を表示 
                    series.PointData.Length = 1
                    ' 価格を Y データセットに割り当て 
                    series.Y(0) = PriceX(i)
                    ' 凡例で製品名と製品価格を書式設定 
                    series.Label = String.Format("{0} ({1:c})", ProductNames(i), PriceX(i))
            Next
    
            ' 円の凡例を表示
            C1Chart1.Legend.Visible = True
            ' グラフの凡例にタイトルを追加
            C1Chart1.Legend.Text = "Product Unit Prices"
    End Sub
    

    C# コードの書き方

    C#
    コードのコピー
    private void Form1_Load(object sender, EventArgs e)
    {
    
            // グラフ種別を設定 
            c1Chart1.ChartArea.Inverted = true;
            c1Chart1.ChartGroups[0].ChartType = C1.Win.C1Chart.Chart2DTypeEnum.Pie;
    
            // 既存のデータセットをクリア 
            c1Chart1.ChartGroups[0].ChartData.SeriesList.Clear();
    
            // データを追加 
            string[] ProductNames = { "Hand Mixer", "Stand Mixer", "Can Opener", "Toaster" ,"Blender" ,"Food Processor" ,"Slow Cooker" ,"Microwave"};
            int[] PriceX = { 80, 400, 20, 60, 150, 300, 130, 500 };
    
            // データセットのコレクションを取得 
            ChartDataSeriesCollection dscoll = c1Chart1.ChartGroups[0].ChartData.SeriesList;
    
            // データセットに入力 
            for (int i=0; i < PriceX.Length; i++)
            {
                    ChartDataSeries series = dscoll.AddNewSeries();
                    // 1つのデータ点を追加して1つの円を表示 
                    series.PointData.Length = 1;
                    // 価格を Y データセットに割り当て 
                    series.Y[0] = PriceX[i];
                    // 凡例で製品名と製品価格を書式設定 
                    series.Label = string.Format("{0} ({1:c})", ProductNames[i], PriceX[i]);
            }
    
            // 円の凡例を表示
            c1Chart1.Legend.Visible = true;
    
            // グラフの凡例にタイトルを追加
            c1Chart1.Legend.Text = "Product Unit Prices";
    }
    
関連トピック