円グラフも単純な値を表示するために一般的に使用されます。円グラフは視覚的な見栄えがよくなり、多くの場合、陰影や回転などの 3D 効果を付けて表示されます。C1Chart では、3D 効果をグラフに追加できますが、データを歪めるため慎重に使用する必要があります。
円グラフには、他の C1Chart のグラフの種類と比較した場合、大きな違いが1つあります。円グラフでは、各データセットは円の1セグメントを表します。そのため、データセットを1つしか持たない円グラフは存在しません(単なる円となります)。ほとんどの場合、円グラフには複数のデータセット(各セグメントに1データセット)があり、各データセットは単一のデータ点を持ちます。C1Chart では、複数のデータ点を含むデータセットはグラフ内の複数の円として表します。
この処理は、各データセットの識別に使用するラベルと、グラフの凡例内でのラベルの表示方法を考えれば理解できます。以下のグラフは、同じ売上データを円グラフとして示します。
このグラフを作成するために使用するコードは、棒グラフのコードと非常に異なります。各値に1データセットを作成し、各データセットは1つのデータ点を含みます。コードは以下のとおりです。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
' グラフデータを取得します。 Dim data As DataView = _dataSet.Tables["Products"].DefaultView data.Sort = "UnitPrice" data.RowFilter = "CategoryID = 1" ' 飲料 ' グラフを設定します。 C1Chart1.Reset() C1Chart1.BackColor = Color.White C1Chart1.ChartArea.Style.Font = new Font("Tahoma", 8) C1Chart1.ChartGroups(0).ChartType = Chart2DTypeEnum.Pie ' データセットコレクションを取得します(円グラフの場合は1セグメント1データセットです)。 Dim dscoll As ChartDataSeriesCollection = C1Chart1.ChartGroups(0).ChartData.SeriesList dscoll.Clear() ' データセットにデータを入力します。 Dim i As Integer For i = 0 To data.Count ? 1 Dim series As ChartDataSeries = dscoll.AddNewSeries() series.PointData.Length = 1 series.Y(0) = data(i)("UnitPrice") series.Label = String.Format("{0} ({1:c})", _ data(i)("ProductName"), data(i)("UnitPrice")) Next I ' 円グラフの凡例を表示します。 C1Chart1.Legend.Visible = True C1Chart1.Legend.Text = "Product Unit Prices" |
C# コードの書き方
C# |
コードのコピー
|
---|---|
//グラフデータを取得します。 DataView data = _dataSet.Tables["Products"].DefaultView; data.Sort = "UnitPrice"; data.RowFilter = "CategoryID = 1"; // 飲料 // グラフを設定します。 c1Chart1.Reset(); c1Chart1.BackColor = Color.White; c1Chart1.ChartArea.Style.Font = new Font("Tahoma", 8); c1Chart1.ChartGroups[0].ChartType = Chart2DTypeEnum.Pie; // データセットコレクションを取得します(円グラフの場合は1セグメント1データセットです)。 ChartDataSeriesCollection dscoll = c1Chart1.ChartGroups[0].ChartData.SeriesList; dscoll.Clear(); // データセットにデータを入力します。 for (int i = 0; i < data.Count; i++) { ChartDataSeries series = dscoll.AddNewSeries(); series.PointData.Length = 1; series.Y[0] = data[i]["UnitPrice"]; series.Label = string.Format("{0} ({1:c})", data[i]["ProductName"], data[i]["UnitPrice"]); } // 円グラフの凡例を表示します。 c1Chart1.Legend.Visible = true; c1Chart1.Legend.Text = "Product Unit Prices"; |